[ https://issues.apache.org/jira/browse/DRILL-5083?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16094827#comment-16094827 ]
ASF GitHub Bot commented on DRILL-5083: --------------------------------------- GitHub user KulykRoman opened a pull request: https://github.com/apache/drill/pull/881 DRILL-5083: status.getOutcome() return FAILURE if one of the batches … …has STOP status (to avoid infinite loop in Merge Join). You can merge this pull request into a Git repository by running: $ git pull https://github.com/KulykRoman/drill DRILL-5083 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/drill/pull/881.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #881 ---- commit 2db3afd6b5bb8851b8bd938ae66a025c22540cbf Author: Roman Kulyk <rom.ku...@gmail.com> Date: 2017-07-20T13:33:49Z DRILL-5083: status.getOutcome() return FAILURE if one of the batches has STOP status (to avoid infinite loop in Merge Join). ---- > 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 > 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)