[
https://issues.apache.org/jira/browse/DRILL-5967?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16286823#comment-16286823
]
Timothy Farkas commented on DRILL-5967:
---------------------------------------
[~dechanggu] Please try commit *a15e80c1bc225b9fe745b4bfeaedbc89b9f56262* .
After looking at the code again I saw my previous two fixes actually didn't fix
anything, which is probably when they didn't work :). The root fragment was
already clearing data stored by the partitioners and waiting for asynchronously
sent batches to be freed when it's close method was called. I suspect the issue
is that a new OrderedPartitionRecordBatch is created in
OrderedPartitionSenderCreator and passed to the PartitionSenderRootExec. Since
the OrderedPartitionRecordBatch is created in the batch creator it is never
added to the list of operators that need to be closed by the root, so the
memory it allocates is never freed.
> Memory leak by HashPartitionSender
> ----------------------------------
>
> Key: DRILL-5967
> URL: https://issues.apache.org/jira/browse/DRILL-5967
> Project: Apache Drill
> Issue Type: Bug
> Reporter: Timothy Farkas
> Assignee: Timothy Farkas
> Original Estimate: 168h
> Remaining Estimate: 168h
>
> The error found by [[email protected]] and [~dechanggu]
> {code}
> 2017-10-25 15:43:28,658 [260eec84-7de3-03ec-300f-7fdbc111fb7c:frag:2:9] ERROR
> o.a.d.e.w.fragment.FragmentExecutor - SYSTEM ERROR: IllegalStateException:
> Memory was leaked by query. Memory leaked: (9216)
> Allocator(op:2:9:0:HashPartitionSender) 1000000/9216/12831744/10000000000
> (res/actual/peak/limit)
> Fragment 2:9
> [Error Id: 7eae6c2a-868c-49f8-aad8-b690243ffe9b on mperf113.qa.lab:31010]
> org.apache.drill.common.exceptions.UserException: SYSTEM ERROR:
> IllegalStateException: Memory was leaked by query. Memory leaked: (9216)
> Allocator(op:2:9:0:HashPartitionSender) 1000000/9216/12831744/10000000000
> (res/actual/peak/limit)
> Fragment 2:9
> [Error Id: 7eae6c2a-868c-49f8-aad8-b690243ffe9b on mperf113.qa.lab:31010]
> at
> org.apache.drill.common.exceptions.UserException$Builder.build(UserException.java:586)
> ~[drill-common-1.11.0-mapr.jar:1.11.0-mapr]
> at
> org.apache.drill.exec.work.fragment.FragmentExecutor.sendFinalState(FragmentExecutor.java:301)
> [drill-java-exec-1.11.0-mapr.jar:1.11.0-mapr]
> at
> org.apache.drill.exec.work.fragment.FragmentExecutor.cleanup(FragmentExecutor.java:160)
> [drill-java-exec-1.11.0-mapr.jar:1.11.0-mapr]
> at
> org.apache.drill.exec.work.fragment.FragmentExecutor.run(FragmentExecutor.java:267)
> [drill-java-exec-1.11.0-mapr.jar:1.11.0-mapr]
> at
> org.apache.drill.common.SelfCleaningRunnable.run(SelfCleaningRunnable.java:38)
> [drill-common-1.11.0-mapr.jar:1.11.0-mapr]
> at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
> [na:1.8.0_121]
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
> [na:1.8.0_121]
> at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121]
> Caused by: java.lang.IllegalStateException: Memory was leaked by query.
> Memory leaked: (9216)
> Allocator(op:2:9:0:HashPartitionSender) 1000000/9216/12831744/10000000000
> (res/actual/peak/limit)
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)