Details
-
Bug
-
Status: Closed
-
Minor
-
Resolution: Fixed
-
1.8.0
-
None
Description
This one is very confusing...
In a test with a MergeJoin and external sort, operators are stacked something like this:
Screen - MergeJoin - - External Sort ...
Using the injector to force a OOM in spill, the external sort threw a UserException up the stack. This was handed by:
IteratorValidatorBatchIterator.next( ) RecordIterator.clearInflightBatches( ) RecordIterator.close( ) MergeJoinBatch.close( )
Which does the following:
// Check whether next() should even have been called in current state. if (null != exceptionState) { throw new IllegalStateException(
But, the exceptionState is set, so we end up throwing an IllegalStateException during cleanup.
Seems the code should agree: if next( ) will be called during cleanup, then next( ) should gracefully handle that case.
Attachments
Attachments
Issue Links
- links to