[ https://issues.apache.org/jira/browse/DRILL-2878?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14531369#comment-14531369 ]
Jacques Nadeau commented on DRILL-2878: --------------------------------------- I'm not a big fan of this solution as it doesn't make a lot of sense (high implicit state dynamic). What alternatives did you consider? If this is the best way, I think we need a substantial amount of comment on it. > FragmentExecutor.closeOutResources() is not called if an exception happens in > the Foreman before the fragment executor starts running > ------------------------------------------------------------------------------------------------------------------------------------- > > Key: DRILL-2878 > URL: https://issues.apache.org/jira/browse/DRILL-2878 > Project: Apache Drill > Issue Type: Bug > Components: Execution - Flow > Reporter: Deneche A. Hakim > Assignee: Chris Westin > Fix For: 1.0.0 > > Attachments: DRILL-2878.1.patch.txt > > > When the Foreman sets up the root FragmentExecutor and it needs to wait for > data from the remote fragments, the fragment manager is recorded in the work > bus and the root fragment executor is not run immediately. > If an exception happens in the Foreman while setting up the remote fragments, > the Foreman cancels all fragments and returns a FAILED message to the client. > Because the root fragment executor was not run it will never call it's > closeOutResources() method and it's fragment context will never be closed. > You can easily reproduce this by running the following unit test: > {noformat} > org.apache.drill.exec.server.TestDrillbitResilience#failsWhenSendingFragments > {noformat} > although the test passes successfully because Drill does report the correct > failure to the client, the memory leak is not detected and will show up after > the test finishes -- This message was sent by Atlassian JIRA (v6.3.4#6332)