[ https://issues.apache.org/jira/browse/DRILL-2878?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Deneche A. Hakim updated DRILL-2878: ------------------------------------ Attachment: DRILL-2878.2.patch.txt added more information in the comment. Also added a unit test Note: the unit test assumes DRILL-2757 has been committed as it tries to inject an exception in a position defined in DRILL-2757 > 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: Deneche A. Hakim > Fix For: 1.0.0 > > Attachments: DRILL-2878.1.patch.txt, DRILL-2878.2.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)