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

Ineffective assertion in TestFromClientSide3#testMultiRowMutations

    XMLWordPrintableJSON

Details

    • Test
    • Status: Resolved
    • Minor
    • Resolution: Fixed
    • None
    • 3.0.0-alpha-1
    • None
    • None
    • Reviewed

    Description

      Observed the following in org.apache.hadoop.hbase.util.TestFromClientSide3WoUnsafe-output.txt :

      Caused by: org.apache.hadoop.hbase.ipc.RemoteWithExtrasException(java.io.IOException): java.io.IOException: Timed out waiting for lock for row: ROW-1 in region 089bdfa75f44d88e596479038a6da18b
        at org.apache.hadoop.hbase.regionserver.HRegion.getRowLockInternal(HRegion.java:5816)
        at org.apache.hadoop.hbase.regionserver.HRegion$4.lockRowsAndBuildMiniBatch(HRegion.java:7432)
        at org.apache.hadoop.hbase.regionserver.HRegion.doMiniBatchMutate(HRegion.java:4008)
        at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:3982)
        at org.apache.hadoop.hbase.regionserver.HRegion.mutateRowsWithLocks(HRegion.java:7424)
        at org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint.mutateRows(MultiRowMutationEndpoint.java:116)
        at org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos$MultiRowMutationService.callMethod(MultiRowMutationProtos.java:2266)
        at org.apache.hadoop.hbase.regionserver.HRegion.execService(HRegion.java:8182)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.execServiceOnRegion(RSRpcServices.java:2481)
        at org.apache.hadoop.hbase.regionserver.RSRpcServices.execService(RSRpcServices.java:2463)
      ...
      Exception in thread "pool-678-thread-1" java.lang.AssertionError: This cp should fail because the target lock is blocked by previous put
        at org.junit.Assert.fail(Assert.java:88)
        at org.apache.hadoop.hbase.client.TestFromClientSide3.lambda$testMultiRowMutations$7(TestFromClientSide3.java:861)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      

      Here is related code:

            cpService.execute(() -> {
      ...
              if (!threw) {
                // Can't call fail() earlier because the catch would eat it.
                fail("This cp should fail because the target lock is blocked by previous put");
              }
      

      Since the fail() call is executed by the cpService, the assertion had no bearing on the outcome of the test.

      Attachments

        1. 21221.addendum.txt
          1 kB
          Ted Yu
        2. 21221.v12.txt
          3 kB
          Ted Yu
        3. 21221.v11.txt
          3 kB
          Ted Yu
        4. 21221.v10.txt
          3 kB
          Ted Yu
        5. 21221.v9.txt
          5 kB
          Ted Yu
        6. 21221.v8.txt
          5 kB
          Ted Yu
        7. 21221.v7.txt
          6 kB
          Ted Yu

        Activity

          People

            yuzhihong@gmail.com Ted Yu
            yuzhihong@gmail.com Ted Yu
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: