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/b9ec59eb Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/b9ec59eb Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/b9ec59eb Branch: refs/heads/hbase-14439 Commit: b9ec59ebbe0ea392bfe742a9f3774d9447722d42 Parents: f06c006 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:35 2016 -0700 ---------------------------------------------------------------------- .../java/org/apache/hadoop/hbase/io/hfile/HFileBlock.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/b9ec59eb/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 14a5cd1..1535fa9 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 @@ -35,10 +35,10 @@ import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hbase.HConstants; import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.hbase.fs.HFileSystem; -import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper; import org.apache.hadoop.hbase.io.ByteArrayOutputStream; import org.apache.hadoop.hbase.io.ByteBuffInputStream; import org.apache.hadoop.hbase.io.ByteBufferSupportDataOutputStream; +import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper; import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding; import org.apache.hadoop.hbase.io.encoding.HFileBlockDecodingContext; import org.apache.hadoop.hbase.io.encoding.HFileBlockDefaultDecodingContext; @@ -870,7 +870,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 @@ -1039,7 +1039,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());
