Details
Description
As Ted found,
With this change:
Index: hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.java =================================================================== --- hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.java (revision 1596579) +++ hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestReversibleScanners.java (working copy) @@ -51,6 +51,7 @@ 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; @@ -90,6 +91,7 @@ CacheConfig cacheConf = new CacheConfig(TEST_UTIL.getConfiguration()); HFileContextBuilder hcBuilder = new HFileContextBuilder(); hcBuilder.withBlockSize(2 * 1024); + hcBuilder.withDataBlockEncoding(DataBlockEncoding.FAST_DIFF); HFileContext hFileContext = hcBuilder.build(); StoreFile.Writer writer = new StoreFile.WriterBuilder( TEST_UTIL.getConfiguration(), cacheConf, fs).withOutputDir(
I got:
java.lang.AssertionError: expected:<testRow0197/testCf:testQual0000/1400712260004/Put/vlen=13/mvcc=5> but was:<testRow0198/testCf:testQual0000/1400712260004/ Put/vlen=13/mvcc=0>
at org.junit.Assert.fail(Assert.java:88)
at org.junit.Assert.failNotEquals(Assert.java:743)
at org.junit.Assert.assertEquals(Assert.java:118)
at org.junit.Assert.assertEquals(Assert.java:144)
at org.apache.hadoop.hbase.regionserver.TestReversibleScanners.seekTestOfReversibleKeyValueScanner(TestReversibleScanners.java:533)
at org.apache.hadoop.hbase.regionserver.TestReversibleScanners.testReversibleStoreFileScanner(TestReversibleScanners.java:108)
After debugging, it seems the method of FastDiffDeltaEncoder#getFirstKeyInBlock become broken. And it will cause hfilescanner#seekBefore returns wrong result.
The solution is simple, see the patch.
Attachments
Attachments
Issue Links
- relates to
-
HBASE-11246 Backport HBASE-11234 'FastDiffDeltaEncoder#getFirstKeyInBlock returns wrong result'
- Closed