You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "huginn (Jira)" <ji...@apache.org> on 2026/09/16 13:46:00 UTC
[jira] [Updated] (HBASE-30395) Avoid heap buffer copy in decompression stream fallback
[ https://issues.apache.org/jira/browse/HBASE-30395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
huginn updated HBASE-30395:
---------------------------
Description:
Motivation
The decompression stream fallback currently uses BlockIOUtils.readFullyWithHeapBuffer, which allocates a temporary 1 KiB heap buffer and copies each read into the destination ByteBuff. This adds an avoidable heap buffer copy for on-heap ByteBuff destinations.
was:
Motivation
The decompression stream fallback currently uses BlockIOUtils.readFullyWithHeapBuffer, which allocates a temporary 1 KiB heap buffer and copies each read into the destination ByteBuff. This adds an avoidable heap buffer copy for on-heap ByteBuff destinations.
Proposed change
* Add a readFully(InputStream, ByteBuff, int) helper.
* Read directly into the backing array when the destination ByteBuff is on heap.
* Preserve the existing temporary-buffer fallback for direct or non-array ByteBuff instances.
* Update the compressed and uncompressed stream fallback paths in HFileBlockDefaultDecodingContext.
* Add regression tests for the direct-read and fallback paths.
Compatibility
This change does not modify the HFile file format, wire format, or configuration behavior.
Related context: HBASE-27049
Related change: https://github.com/apache/hbase/pull/8665
> Avoid heap buffer copy in decompression stream fallback
> -------------------------------------------------------
>
> Key: HBASE-30395
> URL: https://issues.apache.org/jira/browse/HBASE-30395
> Project: HBase
> Issue Type: Improvement
> Reporter: huginn
> Priority: Major
>
> Motivation
> The decompression stream fallback currently uses BlockIOUtils.readFullyWithHeapBuffer, which allocates a temporary 1 KiB heap buffer and copies each read into the destination ByteBuff. This adds an avoidable heap buffer copy for on-heap ByteBuff destinations.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)