Description
Scan/Get with setColumn and the store with ROWCOL bloom filter could throw AssertionError of scan order check.
which is resolved by HBASE-19863 for 1.4, 2.x, or later version.
A same bug exists in branch 1.3 and older, and also my cluster suffered from the same problem.
When ROWCOL bloomFilter is enabled and fake cell is the prevCell,
actual hfs offset can be behind, in this case heap.next() is not enough. it requires reseek to find right next cell.
java.lang.AssertionError: Key key167/0:C09/OLDEST_TIMESTAMP/Minimum/vlen=0/seqid=0 followed by a smaller key key167/0:C04/1565596231736/Put/vlen=3/seqid=4 in cf 0 at org.apache.hadoop.hbase.regionserver.StoreScanner.checkScanOrder(StoreScanner.java:969) at org.apache.hadoop.hbase.regionserver.StoreScanner.next(StoreScanner.java:551) at org.apache.hadoop.hbase.regionserver.KeyValueHeap.next(KeyValueHeap.java:150) at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.populateResult(HRegion.java:6144) at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.nextInternal(HRegion.java:6307) at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.nextRaw(HRegion.java:6081) at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:2755) at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:2957) at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:35072) at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:2394) at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:123) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:188) at org.apache.hadoop.hbase.ipc.RpcExecutor$Handler.run(RpcExecutor.java:168)
I created a backport patch of .HBASE-19863 and HBASE-17958
Exact same testcase included. And changed StoreScanner due to the difference of codes.
Attachments
Attachments
Issue Links
- links to