[ 
https://issues.apache.org/jira/browse/ARROW-5057?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rok Mihevc updated ARROW-5057:
------------------------------
    External issue URL: https://github.com/apache/arrow/issues/21550

> [Java]  allocate new buffer code doesn't release extra allocated buffer 
> properly
> --------------------------------------------------------------------------------
>
>                 Key: ARROW-5057
>                 URL: https://issues.apache.org/jira/browse/ARROW-5057
>             Project: Apache Arrow
>          Issue Type: Bug
>          Components: Java
>    Affects Versions: 0.12.1
>            Reporter: Hitesh Khamesra
>            Priority: Major
>              Labels: pull-request-available
>          Time Spent: 4.5h
>  Remaining Estimate: 0h
>
> [Class 
> BaseValueVector|https://github.com/apache/arrow/blob/master/java/vector/src/main/java/org/apache/arrow/vector/BaseValueVector.java]
>  's method allocFixedDataAndValidityBufs on line#162 allocates a buffer in 
> power of 2 size. After that, it has a code to release extra buffer. For that, 
> it calculates the extra buffer from allocated size "bufferSize" but in my 
> opinion, it should take original "valueCount" to find the extra buffer size. 
> Here, I see a problem in line#162, where its taking "bufferSize" to find the 
> extra allocated bytes. It should be "valueCount*typeWidth + valueCount/8".
> Here is an example for that. Let's take 1000 ints. Then,
>  valueCount = 1000 ints
>  typeWidth = 4 bytes
>  validitiyBufferSize = 125 bytes
>  valueBufferSize = 4000 bytes
>  combinedSize(valueBufferSize + validityBufferSize) = 4128 bytes (multiple of 
> 8)
>  combinedSizeWith2ThePowerSize = 8192 bytes, this will be "bufferSize" at 
> line#152.
> With the above calculation, this code should release 
> (combinedSizeWith2ThePowerSize - combinedSize) = 4064 bytes. But, this is not 
> happening.
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to