You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by an...@apache.org on 2015/05/30 05:26:03 UTC

hbase git commit: HBASE-13807 [0.98] NoTagsKeyValue optimization is not proper.

Repository: hbase
Updated Branches:
  refs/heads/0.98 1bde01392 -> 919c4a452


HBASE-13807 [0.98] NoTagsKeyValue optimization is not proper.


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/919c4a45
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/919c4a45
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/919c4a45

Branch: refs/heads/0.98
Commit: 919c4a4522e3a6536d9f32b4b0149d9e57794c4c
Parents: 1bde013
Author: anoopsjohn <an...@gmail.com>
Authored: Sat May 30 08:55:40 2015 +0530
Committer: anoopsjohn <an...@gmail.com>
Committed: Sat May 30 08:55:40 2015 +0530

----------------------------------------------------------------------
 .../io/encoding/BufferedDataBlockEncoder.java    | 11 +++++++++--
 .../hadoop/hbase/io/hfile/HFileReaderV2.java     |  8 +++++---
 .../hadoop/hbase/io/hfile/HFileReaderV3.java     | 19 +++++++++----------
 3 files changed, 23 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/919c4a45/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 5e9a5ee..445b897 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
@@ -26,6 +26,7 @@ import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.KeyValue.KVComparator;
 import org.apache.hadoop.hbase.KeyValue.SamePrefixComparator;
+import org.apache.hadoop.hbase.NoTagsKeyValue;
 import org.apache.hadoop.hbase.io.TagCompressionContext;
 import org.apache.hadoop.hbase.io.hfile.BlockType;
 import org.apache.hadoop.hbase.io.hfile.HFileContext;
@@ -254,8 +255,14 @@ abstract class BufferedDataBlockEncoder implements DataBlockEncoder {
     @Override
     public KeyValue getKeyValue() {
       ByteBuffer kvBuf = getKeyValueBuffer();
-      KeyValue kv = new KeyValue(kvBuf.array(), kvBuf.arrayOffset(), kvBuf.array().length
-          - kvBuf.arrayOffset());
+      KeyValue kv;
+      if (current.tagsLength == 0) {
+        kv = new NoTagsKeyValue(kvBuf.array(), kvBuf.arrayOffset(), kvBuf.array().length
+            - kvBuf.arrayOffset());
+      } else {
+        kv = new KeyValue(kvBuf.array(), kvBuf.arrayOffset(), kvBuf.array().length
+            - kvBuf.arrayOffset());
+      }
       kv.setMvccVersion(current.memstoreTS);
       return kv;
     }

http://git-wip-us.apache.org/repos/asf/hbase/blob/919c4a45/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java
index 933e773..4cd4d7a 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV2.java
@@ -31,6 +31,7 @@ import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.KeyValue;
 import org.apache.hadoop.hbase.KeyValue.KVComparator;
+import org.apache.hadoop.hbase.NoTagsKeyValue;
 import org.apache.hadoop.hbase.fs.HFileSystem;
 import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;
 import org.apache.hadoop.hbase.io.encoding.DataBlockEncoder;
@@ -684,11 +685,12 @@ public class HFileReaderV2 extends AbstractHFileReader {
       if (!isSeeked())
         return null;
 
-      return formKeyValue();
+      // HFile V2 do not support tags.
+      return formNoTagsKeyValue();
     }
 
-    protected KeyValue formKeyValue() {
-      KeyValue ret = new KeyValue(blockBuffer.array(), blockBuffer.arrayOffset()
+    protected KeyValue formNoTagsKeyValue() {
+      KeyValue ret = new NoTagsKeyValue(blockBuffer.array(), blockBuffer.arrayOffset()
           + blockBuffer.position(), getCellBufSize());
       if (this.reader.shouldIncludeMemstoreTS()) {
         ret.setMvccVersion(currMemstoreTS);

http://git-wip-us.apache.org/repos/asf/hbase/blob/919c4a45/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV3.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV3.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV3.java
index fb9fd16..9dd885f 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV3.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/HFileReaderV3.java
@@ -28,7 +28,6 @@ import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.hbase.HConstants;
 import org.apache.hadoop.hbase.KeyValue;
-import org.apache.hadoop.hbase.NoTagsKeyValue;
 import org.apache.hadoop.hbase.fs.HFileSystem;
 import org.apache.hadoop.hbase.io.FSDataInputStreamWrapper;
 import org.apache.hadoop.hbase.io.crypto.Cipher;
@@ -192,16 +191,16 @@ public class HFileReaderV3 extends HFileReaderV2 {
     public KeyValue getKeyValue() {
       if (!isSeeked())
         return null;
-      if (currTagsLen > 0) {
-        return formKeyValue();
-      } else {
-        NoTagsKeyValue ret = new NoTagsKeyValue(blockBuffer.array(), blockBuffer.arrayOffset()
-            + blockBuffer.position(), getCellBufSize());
-        if (this.reader.shouldIncludeMemstoreTS()) {
-          ret.setMvccVersion(currMemstoreTS);
-        }
-        return ret;
+      if (currTagsLen == 0) {
+        // There are no Tags in this KeyValue. Just return NoTagsKeyValue
+        return formNoTagsKeyValue();
+      }
+      KeyValue ret = new KeyValue(blockBuffer.array(), blockBuffer.arrayOffset()
+          + blockBuffer.position(), getCellBufSize());
+      if (this.reader.shouldIncludeMemstoreTS()) {
+        ret.setMvccVersion(currMemstoreTS);
       }
+      return ret;
     }
 
     protected void setNonSeekedState() {