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