From 6d2f61c8b309e85b236d84c40cbed7b0cad29504 Mon Sep 17 00:00:00 2001 From: Laurent Goujon Date: Fri, 15 Apr 2016 14:00:19 -0700 Subject: [PATCH] [ARROW-105] Fix BaseAllocator.java NPE when assertions are disabled When verifying memory using verifyAllocator() method, BaseAllocator throws NPE if assertions are disabled. Fixing this issue by checking first if assertion are disabled --- .../apache/arrow/memory/BaseAllocator.java | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/java/memory/src/main/java/org/apache/arrow/memory/BaseAllocator.java b/java/memory/src/main/java/org/apache/arrow/memory/BaseAllocator.java index 90257bb9ffbf7..f1503c902d0be 100644 --- a/java/memory/src/main/java/org/apache/arrow/memory/BaseAllocator.java +++ b/java/memory/src/main/java/org/apache/arrow/memory/BaseAllocator.java @@ -99,6 +99,7 @@ protected BaseAllocator( } + @Override public void assertOpen() { if (AssertionUtil.ASSERT_ENABLED) { if (isClosed) { @@ -287,6 +288,7 @@ public Reservation() { } } + @Override public boolean add(final int nBytes) { assertOpen(); @@ -308,6 +310,7 @@ public boolean add(final int nBytes) { return true; } + @Override public ArrowBuf allocateBuffer() { assertOpen(); @@ -319,14 +322,17 @@ public ArrowBuf allocateBuffer() { return arrowBuf; } + @Override public int getSize() { return nBytes; } + @Override public boolean isUsed() { return used; } + @Override public boolean isClosed() { return closed; } @@ -364,6 +370,7 @@ public void close() { closed = true; } + @Override public boolean reserve(int nBytes) { assertOpen(); @@ -509,6 +516,7 @@ public synchronized void close() { } + @Override public String toString() { final Verbosity verbosity = logger.isTraceEnabled() ? Verbosity.LOG_WITH_STACKTRACE : Verbosity.BASIC; @@ -523,6 +531,7 @@ public String toString() { * * @return A Verbose string of current allocator state. */ + @Override public String toVerboseString() { final StringBuilder sb = new StringBuilder(); print(sb, 0, Verbosity.LOG_WITH_STACKTRACE); @@ -575,13 +584,12 @@ void verifyAllocator() { * when any problems are found */ private void verifyAllocator(final IdentityHashMap buffersSeen) { - synchronized (DEBUG_LOCK) { - - // The remaining tests can only be performed if we're in debug mode. - if (!DEBUG) { - return; - } + // The remaining tests can only be performed if we're in debug mode. + if (!DEBUG) { + return; + } + synchronized (DEBUG_LOCK) { final long allocated = getAllocatedMemory(); // verify my direct descendants