HIVE-16545 : LLAP: bug in arena size determination logic (Sergey Shelukhin, 
reviewed by Prasanth Jayachandran)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/4025eddd
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/4025eddd
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/4025eddd

Branch: refs/heads/branch-2
Commit: 4025eddd43af1a1ab01b83c1701455d7eb26f100
Parents: 2decd51
Author: sergey <ser...@apache.org>
Authored: Thu Apr 27 11:53:25 2017 -0700
Committer: sergey <ser...@apache.org>
Committed: Thu Apr 27 12:44:01 2017 -0700

----------------------------------------------------------------------
 .../java/org/apache/hadoop/hive/llap/cache/BuddyAllocator.java  | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/4025eddd/llap-server/src/java/org/apache/hadoop/hive/llap/cache/BuddyAllocator.java
----------------------------------------------------------------------
diff --git 
a/llap-server/src/java/org/apache/hadoop/hive/llap/cache/BuddyAllocator.java 
b/llap-server/src/java/org/apache/hadoop/hive/llap/cache/BuddyAllocator.java
index e71a09e..3192dca 100644
--- a/llap-server/src/java/org/apache/hadoop/hive/llap/cache/BuddyAllocator.java
+++ b/llap-server/src/java/org/apache/hadoop/hive/llap/cache/BuddyAllocator.java
@@ -123,7 +123,8 @@ public final class BuddyAllocator implements 
EvictionAwareAllocator, BuddyAlloca
     } else {
       cacheDir = null;
     }
-    int arenaSizeVal = (arenaCount == 0) ? MAX_ARENA_SIZE : (int)(maxSizeVal / 
arenaCount);
+    long arenaSizeVal = (arenaCount == 0) ? MAX_ARENA_SIZE : maxSizeVal / 
arenaCount;
+    // The math.min, and the fact that maxAllocation is an int, ensures we 
don't overflow.
     arenaSizeVal = Math.max(maxAllocation, Math.min(arenaSizeVal, 
MAX_ARENA_SIZE));
     if (LlapIoImpl.LOG.isInfoEnabled()) {
       LlapIoImpl.LOG.info("Buddy allocator with " + (isDirect ? "direct" : 
"byte") + " buffers; "
@@ -152,7 +153,7 @@ public final class BuddyAllocator implements 
EvictionAwareAllocator, BuddyAlloca
       LlapIoImpl.LOG.warn("Rounding arena size to " + arenaSizeVal + " from " 
+ oldArenaSize
           + " to be divisible by allocation size " + maxAllocation);
     }
-    arenaSize = arenaSizeVal;
+    arenaSize = (int)arenaSizeVal;
     if ((maxSizeVal % arenaSize) > 0) {
       long oldMaxSize = maxSizeVal;
       maxSizeVal = (maxSizeVal / arenaSize) * arenaSize;

Reply via email to