Fangzhou created ARROW-198:
------------------------------

             Summary: OutOfMemoryError for vector test case
                 Key: ARROW-198
                 URL: https://issues.apache.org/jira/browse/ARROW-198
             Project: Apache Arrow
          Issue Type: Bug
          Components: Java - Memory, Java - Vectors
            Reporter: Fangzhou


When executing vector component  junit-test class TestValueVector,exception can 
be seen.

Exception:
java.lang.Exception: Unexpected exception, 
expected<org.apache.arrow.vector.util.OversizedAllocationException> but 
was<org.apache.arrow.memory.OutOfMemoryException>

where the issue comes from:
public void testFixedVectorReallocation() {
....
 try {
      vector.allocateNew(expectedValueCapacity);   <-- where the exception 
comes from
....

analysis:

allocateNew will invoke classes from io.netty.buffer from memory component and 
finally invoke netty third party package.I assume there is no issue when 
invoking  memory  part.Then I trace that the issue is caused by oversizing 
value of initialCapacity setting when invoking AbstractByteBufAllocator class 
in third party netty-buffer-4.0.27.final.jar. I create a test case which can 
reproduces the issue. value of parameter initialCapacity and maxCapacity are 
obtained from debugged

public void testAllocator(){
                int initialCapacity=2147483644;
                int maxCapacity=2147483647;
                ByteBuf buf = 
UnpooledByteBufAllocator.DEFAULT.directBuffer(initialCapacity, maxCapacity);
}

And I checked the rooted affected class java.nio.Bits:

static void reserveMemory(long size, int cap) {
.....
if (totalCapacity + cap > maxMemory)
    throw new OutOfMemoryError("Direct buffer memory");
.....

maxMemory can only be set to 1836056576 at most,but initialCapacity was 
2147483644 at this moment.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to