You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by pr...@apache.org on 2019/08/16 13:39:21 UTC

[arrow] branch master updated: ARROW-6268: [Java] Empty buffers to have a valid address.

This is an automated email from the ASF dual-hosted git repository.

praveenbingo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new cf805e2  ARROW-6268: [Java] Empty buffers to have a valid address.
cf805e2 is described below

commit cf805e2262ad4dd66490be67edbbe56ac7397752
Author: Praveen <pr...@dremio.com>
AuthorDate: Fri Aug 16 19:08:56 2019 +0530

    ARROW-6268: [Java] Empty buffers to have a valid address.
    
    - As part of arrow buffer refactoring done earlier, the empty buffers are now created with an invalid addresses.
    - This breaks client code that assumed that even empty buffers are valid.
    - Uses the address of EMPTY buffer from allocation manager.
    
    Closes #5103 from praveenbingo/testEmptyBuf and squashes the following commits:
    
    464e81c76 <Praveen> ARROW-6268:  Empty buffers to have a valid address.
    
    Authored-by: Praveen <pr...@dremio.com>
    Signed-off-by: Praveen <pr...@dremio.com>
---
 java/memory/src/main/java/org/apache/arrow/memory/BaseAllocator.java    | 2 +-
 .../memory/src/test/java/org/apache/arrow/memory/TestBaseAllocator.java | 1 +
 2 files changed, 2 insertions(+), 1 deletion(-)

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 1f0f37d..3231cd6 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
@@ -278,7 +278,7 @@ public abstract class BaseAllocator extends Accountant implements BufferAllocato
   }
 
   private ArrowBuf createEmpty() {
-    return new ArrowBuf(ReferenceManager.NO_OP, null, 0, 0, true);
+    return new ArrowBuf(ReferenceManager.NO_OP, null, 0, AllocationManager.EMPTY.memoryAddress(), true);
   }
 
   @Override
diff --git a/java/memory/src/test/java/org/apache/arrow/memory/TestBaseAllocator.java b/java/memory/src/test/java/org/apache/arrow/memory/TestBaseAllocator.java
index 38e1298..ff86e9e 100644
--- a/java/memory/src/test/java/org/apache/arrow/memory/TestBaseAllocator.java
+++ b/java/memory/src/test/java/org/apache/arrow/memory/TestBaseAllocator.java
@@ -114,6 +114,7 @@ public class TestBaseAllocator {
       final ArrowBuf arrowBuf = rootAllocator.buffer(0);
       assertNotNull("allocation failed", arrowBuf);
       assertEquals("capacity was non-zero", 0, arrowBuf.capacity());
+      assertTrue("address should be valid", arrowBuf.memoryAddress() != 0);
       arrowBuf.getReferenceManager().release();
     }
   }