[ https://issues.apache.org/jira/browse/DRILL-5083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16148640#comment-16148640 ]
Khurram Faraaz commented on DRILL-5083: --------------------------------------- [~RomanKulyk] Can you please share the manual test to verify this Fix ? I can verify Fix on the latest apache master. Please share that test you have referred to in your pull request. > RecordIterator can sometimes restart a query on close > ----------------------------------------------------- > > Key: DRILL-5083 > URL: https://issues.apache.org/jira/browse/DRILL-5083 > Project: Apache Drill > Issue Type: Bug > Affects Versions: 1.8.0 > Reporter: Paul Rogers > Assignee: Roman > Priority: Minor > Labels: ready-to-commit > Fix For: 1.11.0 > > Attachments: DrillOperatorErrorHandlingRedesign.pdf > > > This one is very confusing... > In a test with a MergeJoin and external sort, operators are stacked something > like this: > {code} > Screen > - MergeJoin > - - External Sort > ... > {code} > Using the injector to force a OOM in spill, the external sort threw a > UserException up the stack. This was handed by: > {code} > IteratorValidatorBatchIterator.next( ) > RecordIterator.clearInflightBatches( ) > RecordIterator.close( ) > MergeJoinBatch.close( ) > {code} > Which does the following: > {code} > // Check whether next() should even have been called in current state. > if (null != exceptionState) { > throw new IllegalStateException( > {code} > 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. -- This message was sent by Atlassian JIRA (v6.4.14#64029)