Uploaded image for project: 'HBase'
  1. HBase
  2. HBASE-22835

Scan/Get with setColumn and the store with ROWCOL bloom filter could throw AssertionError (backport of HBASE-19863)

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 1.3.5
    • 1.3.6
    • Scanners
    • None
    • Reviewed

    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

        1. HBASE-22835.v4.branch-1.3.patch
          29 kB
          Jeongmin Kim
        2. HBASE-22835.v3.branch-1.3.patch
          25 kB
          Jeongmin Kim
        3. HBASE-22835.v2.branch-1.3.patch
          22 kB
          Jeongmin Kim
        4. HBASE-22835.branch-1.3.patch
          23 kB
          Jeongmin Kim

        Issue Links

          Activity

            People

              Unassigned Unassigned
              jeongmin.kim Jeongmin Kim
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: