[ 
https://issues.apache.org/jira/browse/HBASE-30391?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18116042#comment-18116042
 ] 

huginn commented on HBASE-30391:
--------------------------------

PR: https://github.com/apache/hbase/pull/8660

> Reduce array copying when expanding ByteArrayOutputStream
> ---------------------------------------------------------
>
>                 Key: HBASE-30391
>                 URL: https://issues.apache.org/jira/browse/HBASE-30391
>             Project: HBase
>          Issue Type: Improvement
>          Components: HFile
>    Affects Versions: 2.4.11
>            Reporter: huginn
>            Priority: Minor
>              Labels: pull-request-available
>
> org.apache.hadoop.hbase.io.ByteArrayOutputStream copies the entire backing 
> array when it expands, even though only the prefix containing written data is 
> valid.
> When a write exceeds the current capacity, checkSizeAndGrow() allocates a 
> larger array and copies buf.length bytes. The unused portion of the old 
> buffer is copied unnecessarily, increasing CPU work and temporary heap memory 
> traffic.
> The fix is to copy only pos bytes, which preserves the stream contents while 
> avoiding copies of unused capacity.
> Reproduction and validation:
> * Trigger buffer growth by writing data in increments that exceed the initial 
> capacity.
> * Source review against Apache master identifies the expansion copy using 
> buf.length.
> * The change was compiled with JDK 17 and passed targeted Checkstyle; no unit 
> test is included because this is a one-line copy-length correction.



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

Reply via email to