You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by zj...@apache.org on 2014/05/23 06:57:43 UTC

git commit: HBASE-11234 FastDiffDeltaEncoder#getFirstKeyInBlock returns wrong result

Repository: hbase
Updated Branches:
  refs/heads/master 41691e469 -> edae56485


HBASE-11234 FastDiffDeltaEncoder#getFirstKeyInBlock returns wrong result

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

Branch: refs/heads/master
Commit: edae564856b8aefbede64fd3eb73c30aba30372a
Parents: 41691e4
Author: zjusch <zj...@163.com>
Authored: Fri May 23 12:57:10 2014 +0800
Committer: zjusch <zj...@163.com>
Committed: Fri May 23 12:57:10 2014 +0800

----------------------------------------------------------------------
 .../hbase/io/encoding/FastDiffDeltaEncoder.java |  3 +-
 .../io/encoding/PrefixKeyDeltaEncoder.java      |  3 +-
 .../regionserver/TestReversibleScanners.java    | 47 +++++++++++---------
 3 files changed, 30 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/edae5648/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/FastDiffDeltaEncoder.java
----------------------------------------------------------------------
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/FastDiffDeltaEncoder.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/FastDiffDeltaEncoder.java
index 4325f96..c133308 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/FastDiffDeltaEncoder.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/FastDiffDeltaEncoder.java
@@ -360,7 +360,8 @@ public class FastDiffDeltaEncoder extends BufferedDataBlockEncoder {
     ByteBufferUtils.readCompressedInt(block); // commonLength
     int pos = block.position();
     block.reset();
-    return ByteBuffer.wrap(block.array(), pos, keyLength).slice();
+    return ByteBuffer.wrap(block.array(), block.arrayOffset() + pos, keyLength)
+        .slice();
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/hbase/blob/edae5648/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/PrefixKeyDeltaEncoder.java
----------------------------------------------------------------------
diff --git a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/PrefixKeyDeltaEncoder.java b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/PrefixKeyDeltaEncoder.java
index c699f6f..a6db8ee 100644
--- a/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/PrefixKeyDeltaEncoder.java
+++ b/hbase-common/src/main/java/org/apache/hadoop/hbase/io/encoding/PrefixKeyDeltaEncoder.java
@@ -137,7 +137,8 @@ public class PrefixKeyDeltaEncoder extends BufferedDataBlockEncoder {
     }
     int pos = block.position();
     block.reset();
-    return ByteBuffer.wrap(block.array(), pos, keyLength).slice();
+    return ByteBuffer.wrap(block.array(), block.arrayOffset() + pos, keyLength)
+        .slice();
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/hbase/blob/edae5648/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.java
index 06f07c9..2cd5e3a 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.java
@@ -51,6 +51,7 @@ import org.apache.hadoop.hbase.filter.FilterList;
 import org.apache.hadoop.hbase.filter.FilterList.Operator;
 import org.apache.hadoop.hbase.filter.PageFilter;
 import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;
+import org.apache.hadoop.hbase.io.encoding.DataBlockEncoding;
 import org.apache.hadoop.hbase.io.hfile.CacheConfig;
 import org.apache.hadoop.hbase.io.hfile.HFileContext;
 import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;
@@ -88,28 +89,32 @@ public class TestReversibleScanners {
         TEST_UTIL.getDataTestDir("testReversibleStoreFileScanner"),
         "regionname"), "familyname");
     CacheConfig cacheConf = new CacheConfig(TEST_UTIL.getConfiguration());
-    HFileContextBuilder hcBuilder = new HFileContextBuilder();
-    hcBuilder.withBlockSize(2 * 1024);
-    HFileContext hFileContext = hcBuilder.build();
-    StoreFile.Writer writer = new StoreFile.WriterBuilder(
-        TEST_UTIL.getConfiguration(), cacheConf, fs).withOutputDir(
-        hfilePath).withFileContext(hFileContext).build();
-    writeStoreFile(writer);
-
-    StoreFile sf = new StoreFile(fs, writer.getPath(),
-        TEST_UTIL.getConfiguration(), cacheConf, BloomType.NONE);
-
-    List<StoreFileScanner> scanners = StoreFileScanner
-        .getScannersForStoreFiles(Collections.singletonList(sf), false, true,
-            false, Long.MAX_VALUE);
-    StoreFileScanner scanner = scanners.get(0);
-    seekTestOfReversibleKeyValueScanner(scanner);
-    for (int readPoint = 0; readPoint < MAXMVCC; readPoint++) {
-      LOG.info("Setting read point to " + readPoint);
-      scanners = StoreFileScanner.getScannersForStoreFiles(
-          Collections.singletonList(sf), false, true, false, readPoint);
-      seekTestOfReversibleKeyValueScannerWithMVCC(scanners.get(0), readPoint);
+    for (DataBlockEncoding encoding : DataBlockEncoding.values()) {
+      HFileContextBuilder hcBuilder = new HFileContextBuilder();
+      hcBuilder.withBlockSize(2 * 1024);
+      hcBuilder.withDataBlockEncoding(encoding);
+      HFileContext hFileContext = hcBuilder.build();
+      StoreFile.Writer writer = new StoreFile.WriterBuilder(
+          TEST_UTIL.getConfiguration(), cacheConf, fs).withOutputDir(hfilePath)
+          .withFileContext(hFileContext).build();
+      writeStoreFile(writer);
+
+      StoreFile sf = new StoreFile(fs, writer.getPath(),
+          TEST_UTIL.getConfiguration(), cacheConf, BloomType.NONE);
+
+      List<StoreFileScanner> scanners = StoreFileScanner
+          .getScannersForStoreFiles(Collections.singletonList(sf), false, true,
+              false, Long.MAX_VALUE);
+      StoreFileScanner scanner = scanners.get(0);
+      seekTestOfReversibleKeyValueScanner(scanner);
+      for (int readPoint = 0; readPoint < MAXMVCC; readPoint++) {
+        LOG.info("Setting read point to " + readPoint);
+        scanners = StoreFileScanner.getScannersForStoreFiles(
+            Collections.singletonList(sf), false, true, false, readPoint);
+        seekTestOfReversibleKeyValueScannerWithMVCC(scanners.get(0), readPoint);
+      }
     }
+
   }
 
   @Test