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() {