Repository: hbase Updated Branches: refs/heads/master 9a94dc90b -> 4127fd2a7
iHBASE-16792 Reuse KeyValue.KeyOnlyKeyValue in BufferedDataBlockEncoder.SeekerState (Binlijin) Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/4127fd2a Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/4127fd2a Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/4127fd2a Branch: refs/heads/master Commit: 4127fd2a7c66f8365586d3c8446f10bf04232ff5 Parents: 9a94dc9 Author: Ramkrishna <ramkrishna.s.vasude...@intel.com> Authored: Fri Oct 14 17:52:24 2016 +0530 Committer: Ramkrishna <ramkrishna.s.vasude...@intel.com> Committed: Fri Oct 14 17:52:24 2016 +0530 ---------------------------------------------------------------------- .../main/java/org/apache/hadoop/hbase/KeyValue.java | 15 +++++++++++++++ .../hbase/io/encoding/BufferedDataBlockEncoder.java | 4 ++-- .../apache/hadoop/hbase/regionserver/HRegion.java | 4 ++-- 3 files changed, 19 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/4127fd2a/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java ---------------------------------------------------------------------- diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java index 8f8554c..f9a621a 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/KeyValue.java @@ -43,6 +43,7 @@ import org.apache.hadoop.hbase.util.Bytes; import org.apache.hadoop.hbase.util.ClassSize; import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.io.RawComparator; + import com.google.common.annotations.VisibleForTesting; /** @@ -2641,6 +2642,20 @@ public class KeyValue implements ExtendedCell { this.rowLen = Bytes.toShort(this.bytes, this.offset); } + public void set(KeyOnlyKeyValue keyOnlyKeyValue) { + this.bytes = keyOnlyKeyValue.bytes; + this.length = keyOnlyKeyValue.length; + this.offset = keyOnlyKeyValue.offset; + this.rowLen = keyOnlyKeyValue.rowLen; + } + + public void clear() { + rowLen = -1; + bytes = null; + offset = 0; + length = 0; + } + @Override public int getKeyOffset() { return this.offset; http://git-wip-us.apache.org/repos/asf/hbase/blob/4127fd2a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/BufferedDataBlockEncoder.java ---------------------------------------------------------------------- diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/BufferedDataBlockEncoder.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/BufferedDataBlockEncoder.java index 4d3a26c..edecd9a 100644 --- a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/BufferedDataBlockEncoder.java +++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/BufferedDataBlockEncoder.java @@ -139,7 +139,7 @@ abstract class BufferedDataBlockEncoder extends AbstractDataBlockEncoder { protected void invalidate() { valueOffset = -1; tagsCompressedLength = 0; - currentKey = new KeyValue.KeyOnlyKeyValue(); + currentKey.clear(); uncompressTags = true; currentBuffer = null; } @@ -188,7 +188,7 @@ abstract class BufferedDataBlockEncoder extends AbstractDataBlockEncoder { keyBuffer, nextState.lastCommonPrefix, nextState.keyLength - nextState.lastCommonPrefix); } - currentKey = nextState.currentKey; + currentKey.set(nextState.currentKey); valueOffset = nextState.valueOffset; keyLength = nextState.keyLength; http://git-wip-us.apache.org/repos/asf/hbase/blob/4127fd2a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java index a486599..1c489c3 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java @@ -361,9 +361,9 @@ public class HRegion implements HeapSize, PropagatingConfigurationObserver, Regi // We need to ensure that while we are calculating the smallestReadPoint // no new RegionScanners can grab a readPoint that we are unaware of. // We achieve this by synchronizing on the scannerReadPoints object. - synchronized(scannerReadPoints) { + synchronized (scannerReadPoints) { minimumReadPoint = mvcc.getReadPoint(); - for (Long readPoint: this.scannerReadPoints.values()) { + for (Long readPoint : this.scannerReadPoints.values()) { if (readPoint < minimumReadPoint) { minimumReadPoint = readPoint; }