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

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 1.3.5
    • Fix Version/s: 1.3.6
    • Component/s: Scanners
    • Labels:
      None
    • Hadoop Flags:
      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.branch-1.3.patch
          23 kB
          Jeongmin Kim
        2. HBASE-22835.v2.branch-1.3.patch
          22 kB
          Jeongmin Kim
        3. HBASE-22835.v3.branch-1.3.patch
          25 kB
          Jeongmin Kim
        4. HBASE-22835.v4.branch-1.3.patch
          29 kB
          Jeongmin Kim

          Issue Links

            Activity

              People

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

                Dates

                • Created:
                  Updated:
                  Resolved: