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)

VotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    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.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

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

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

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment