HBASE-16694 Reduce garbage for onDiskChecksum in HFileBlock (binlijin)
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/67a43c30 Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/67a43c30 Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/67a43c30 Branch: refs/heads/branch-1 Commit: 67a43c30594329dc4a0de19787d2796e05f0b2c8 Parents: 4566e4d Author: Andrew Purtell <[email protected]> Authored: Mon Sep 26 13:49:10 2016 -0700 Committer: Andrew Purtell <[email protected]> Committed: Mon Sep 26 13:55:28 2016 -0700 ---------------------------------------------------------------------- .../main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/67a43c30/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java index b2ed8d4..d5f5a69 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java @@ -855,7 +855,7 @@ public class HFileBlock implements Cacheable { * part of onDiskBytesWithHeader. If data is uncompressed, then this * variable stores the checksum data for this block. */ - private byte[] onDiskChecksum; + private byte[] onDiskChecksum = HConstants.EMPTY_BYTE_ARRAY; /** * Valid in the READY state. Contains the header and the uncompressed (but @@ -1027,7 +1027,9 @@ public class HFileBlock implements Cacheable { onDiskBlockBytesWithHeader.length + numBytes, uncompressedBlockBytesWithHeader.length, onDiskBlockBytesWithHeader.length); } - onDiskChecksum = new byte[numBytes]; + if (onDiskChecksum.length != numBytes) { + onDiskChecksum = new byte[numBytes]; + } ChecksumUtil.generateChecksums( onDiskBlockBytesWithHeader, 0, onDiskBlockBytesWithHeader.length, onDiskChecksum, 0, fileContext.getChecksumType(), fileContext.getBytesPerChecksum());
