[
https://issues.apache.org/jira/browse/DRILL-2878?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14531640#comment-14531640
]
Deneche A. Hakim commented on DRILL-2878:
-----------------------------------------
Yeah, that's why the patch starts with "quick fix"
I thought I could somehow update the FragmentManager to close the fragment
executor if it didn't start running but then I realized a similar problem
exists for fragment managers: if you don't start a fragment you will never
remove it's manager from the work bus!
> 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)