Github user vrozov commented on a diff in the pull request:

    https://github.com/apache/drill/pull/1237#discussion_r184590436
  
    --- Diff: 
exec/memory/base/src/main/java/org/apache/drill/exec/memory/AllocationManager.java
 ---
    @@ -253,10 +261,12 @@ public boolean transferBalance(final BufferLedger 
target) {
               target.historicalLog.recordEvent("incoming(from %s)", 
owningLedger.allocator.name);
             }
     
    -        boolean overlimit = target.allocator.forceAllocate(size);
    +        // Release first to handle the case where the current and target 
allocators were part of the same
    +        // parent / child tree.
             allocator.releaseBytes(size);
    +        boolean allocationFit = target.allocator.forceAllocate(size);
    --- End diff --
    
    In this case, changing the order of `forceAllocate()` and `releaseBytes()` 
is incorrect as ownership is not changed, but the old owner does not account 
for that memory anymore.


---

Reply via email to