[ https://issues.apache.org/jira/browse/DRILL-5083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16174055#comment-16174055 ]
Khurram Faraaz commented on DRILL-5083: --------------------------------------- Verified on apache master Drill 1.12.0 commit aaff1b35b7339fb4e6ab480dd517994ff9f0a5c5, the issue is not seen with the fix. > 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 Kulyk > Priority: Minor > Labels: ready-to-commit > Fix For: 1.11.0 > > Attachments: DrillOperatorErrorHandlingRedesign.pdf, Reproduce5083.jpg > > > 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)