[ https://issues.apache.org/jira/browse/DRILL-3811?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14901476#comment-14901476 ]
ASF GitHub Bot commented on DRILL-3811: --------------------------------------- Github user adeneche commented on the pull request: https://github.com/apache/drill/pull/163#issuecomment-142120660 TopLevelAllocator's constructor is not public but because the unit test is in the same package it was able to access the constructor anyway. Fixed the test to use RootAllocatorFactory instead > AtomicRemainder incorrectly accounts for transferred allocations > ---------------------------------------------------------------- > > Key: DRILL-3811 > URL: https://issues.apache.org/jira/browse/DRILL-3811 > Project: Apache Drill > Issue Type: Bug > Components: Execution - Relational Operators > Reporter: Deneche A. Hakim > Assignee: Chris Westin > Attachments: DRILL-3811.1.patch.txt > > > when an allocator takes ownership of a buffer, AtomicRemainder.forceGet(int) > is called to account for the extra memory of the buffer, but when the > allocator exceeds it's maximum allocated memory it accounts for it > incorrectly. In the following code, {{availableShared.andAndGet(size)}} > should actually receive {{-size}}: > {code} > public boolean forceGet(long size) { > if (get(size, this.applyFragmentLimit)) { > return true; > } else { > availableShared.addAndGet(size); > if (parent != null) { > parent.forceGet(size); > } > return false; > } > } > {code} > I was able to reproduce the issue in a simple unit test -- This message was sent by Atlassian JIRA (v6.3.4#6332)