Fix BaseAllocator.java NPE when assertions are disabled This closes #64
When verifying memory using verifyAllocator() method, BaseAllocator throws NPE if assertions are disabled. Fixing this issue by checking first if assertion are disabled Project: http://git-wip-us.apache.org/repos/asf/arrow/repo Commit: http://git-wip-us.apache.org/repos/asf/arrow/commit/e316b3f7 Tree: http://git-wip-us.apache.org/repos/asf/arrow/tree/e316b3f7 Diff: http://git-wip-us.apache.org/repos/asf/arrow/diff/e316b3f7 Branch: refs/heads/master Commit: e316b3f765167fa1f45197061624e73332b095f4 Parents: c0985a4 Author: Laurent Goujon <[email protected]> Authored: Fri Apr 15 14:00:19 2016 -0700 Committer: Steven Phillips <[email protected]> Committed: Thu May 19 13:19:21 2016 -0700 ---------------------------------------------------------------------- .../org/apache/arrow/memory/BaseAllocator.java | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/arrow/blob/e316b3f7/java/memory/src/main/java/org/apache/arrow/memory/BaseAllocator.java ---------------------------------------------------------------------- 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 90257bb..f1503c9 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 @@ public abstract class BaseAllocator extends Accountant implements BufferAllocato } + @Override public void assertOpen() { if (AssertionUtil.ASSERT_ENABLED) { if (isClosed) { @@ -287,6 +288,7 @@ public abstract class BaseAllocator extends Accountant implements BufferAllocato } } + @Override public boolean add(final int nBytes) { assertOpen(); @@ -308,6 +310,7 @@ public abstract class BaseAllocator extends Accountant implements BufferAllocato return true; } + @Override public ArrowBuf allocateBuffer() { assertOpen(); @@ -319,14 +322,17 @@ public abstract class BaseAllocator extends Accountant implements BufferAllocato 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 abstract class BaseAllocator extends Accountant implements BufferAllocato closed = true; } + @Override public boolean reserve(int nBytes) { assertOpen(); @@ -509,6 +516,7 @@ public abstract class BaseAllocator extends Accountant implements BufferAllocato } + @Override public String toString() { final Verbosity verbosity = logger.isTraceEnabled() ? Verbosity.LOG_WITH_STACKTRACE : Verbosity.BASIC; @@ -523,6 +531,7 @@ public abstract class BaseAllocator extends Accountant implements BufferAllocato * * @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 @@ public abstract class BaseAllocator extends Accountant implements BufferAllocato * when any problems are found */ private void verifyAllocator(final IdentityHashMap<UnsafeDirectLittleEndian, BaseAllocator> 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
