HBase
  1. HBase
  2. HBASE-7290 Online snapshots
  3. HBASE-7651

RegionServerSnapshotManager fails with CancellationException if previous snapshot fails in per region task

    Details

    • Type: Sub-task Sub-task
    • Status: Closed
    • Priority: Blocker Blocker
    • Resolution: Fixed
    • Affects Version/s: hbase-7290
    • Fix Version/s: 0.95.0
    • Component/s: snapshots
    • Labels:
      None
    • Hadoop Flags:
      Reviewed

      Description

      I've reproduced this problem consistently on a 20 node cluster.

      The first run fails on a node (jon-snaphots-2 in this case) to take snapshot due to a NotServingRegionException (this is acceptable)

      2013-01-23 13:32:48,631 DEBUG org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher:  accepting received exception
      org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable via jon-snapshots-2.ent.cloudera.com,22101,1358976524369:org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable: org.apache.hadoop.hbase.NotServingRegionException: TestTable,0002493652,1358976652443.b858147ad87a7812ac9a73dd8fef36ad. is closing
              at org.apache.hadoop.hbase.errorhandling.ForeignException.deserialize(ForeignException.java:184)
              at org.apache.hadoop.hbase.procedure.ZKProcedureCoordinatorRpcs.abort(ZKProcedureCoordinatorRpcs.java:240)
              at org.apache.hadoop.hbase.procedure.ZKProcedureCoordinatorRpcs$1.nodeCreated(ZKProcedureCoordinatorRpcs.java:182)
              at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:294)
              at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:519)
              at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:495)
      Caused by: org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable: org.apache.hadoop.hbase.NotServingRegionException: TestTable,0002493652,1358976652443.b858147ad87a7812ac9a73dd8fef36ad. is closing
              at org.apache.hadoop.hbase.regionserver.snapshot.RegionServerSnapshotManager$SnapshotSubprocedurePool.waitForOutstandingTasks(RegionServerSnapshotManager.java:343)
              at org.apache.hadoop.hbase.regionserver.snapshot.FlushSnapshotSubprocedure.flushSnapshot(FlushSnapshotSubprocedure.java:107)
              at org.apache.hadoop.hbase.regionserver.snapshot.FlushSnapshotSubprocedure.insideBarrier(FlushSnapshotSubprocedure.java:123)
              at org.apache.hadoop.hbase.procedure.Subprocedure.call(Subprocedure.java:181)
              at org.apache.hadoop.hbase.procedure.Subprocedure.call(Subprocedure.java:52)
              at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
              at java.util.concurrent.FutureTask.run(FutureTask.java:138)
              at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
              at java.lang.Thread.run(Thread.java:662)
      2013-01-23 13:32:48,631 DEBUG org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher:  Recieved error, notifying listeners...
      2013-01-23 13:32:48,730 ERROR org.apache.hadoop.hbase.procedure.Procedure: Procedure 'pe-6' execution failed!
      org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable via jon-snapshots-2.ent.cloudera.com,22101,1358976524369:org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable: org.apache.hadoop.hbase.NotServingRegionException: TestTable,0002493652,1358976652443.b858147ad87a7812ac9a73dd8fef36ad. is closing
              at org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher.rethrowException(ForeignExceptionDispatcher.java:84)
              at org.apache.hadoop.hbase.procedure.Procedure.waitForLatch(Procedure.java:357)
              at org.apache.hadoop.hbase.procedure.Procedure.call(Procedure.java:203)
              at org.apache.hadoop.hbase.procedure.Procedure.call(Procedure.java:68)
              at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
              at java.util.concurrent.FutureTask.run(FutureTask.java:138)
              at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
              at java.lang.Thread.run(Thread.java:662)
      Caused by: org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable: org.apache.hadoop.hbase.NotServingRegionException: TestTable,0002493652,1358976652443.b858147ad87a7812ac9a73dd8fef36ad. is closing
              at org.apache.hadoop.hbase.regionserver.snapshot.RegionServerSnapshotManager$SnapshotSubprocedurePool.waitForOutstandingTasks(RegionServerSnapshotManager.java:343)
              at org.apache.hadoop.hbase.regionserver.snapshot.FlushSnapshotSubprocedure.flushSnapshot(FlushSnapshotSubprocedure.java:107)
              at org.apache.hadoop.hbase.regionserver.snapshot.FlushSnapshotSubprocedure.insideBarrier(FlushSnapshotSubprocedure.java:123)
              at org.apache.hadoop.hbase.procedure.Subprocedure.call(Subprocedure.java:181)
              at org.apache.hadoop.hbase.procedure.Subprocedure.call(Subprocedure.java:52)
              ... 5 more
      

      Subsequent snapshot attempts that require jon-snapshot-2 to participate fail like this:

      org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable via jon-snapshots-2.ent.cloudera.com,22101,1358976524369:org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable: java.util.concurrent.CancellationException
              at org.apache.hadoop.hbase.errorhandling.ForeignException.deserialize(ForeignException.java:184)
              at org.apache.hadoop.hbase.procedure.ZKProcedureCoordinatorRpcs.abort(ZKProcedureCoordinatorRpcs.java:240)
              at org.apache.hadoop.hbase.procedure.ZKProcedureCoordinatorRpcs$1.nodeCreated(ZKProcedureCoordinatorRpcs.java:182)
              at org.apache.hadoop.hbase.zookeeper.ZooKeeperWatcher.process(ZooKeeperWatcher.java:294)
              at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:519)
              at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:495)
      Caused by: org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable: java.util.concurrent.CancellationException
              at org.apache.hadoop.hbase.procedure.Subprocedure.cancel(Subprocedure.java:270)
              at org.apache.hadoop.hbase.procedure.Subprocedure.call(Subprocedure.java:202)
              at org.apache.hadoop.hbase.procedure.Subprocedure.call(Subprocedure.java:52)
              at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
              at java.util.concurrent.FutureTask.run(FutureTask.java:138)
              at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
              at java.lang.Thread.run(Thread.java:662)
      2013-01-23 13:32:59,557 DEBUG org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher:  Recieved error, notifying listeners...
      2013-01-23 13:32:59,810 ERROR org.apache.hadoop.hbase.procedure.Procedure: Procedure 'pe-7' execution failed!
      org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable via jon-snapshots-2.ent.cloudera.com,22101,1358976524369:org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable: java.util.concurrent.CancellationException
              at org.apache.hadoop.hbase.errorhandling.ForeignExceptionDispatcher.rethrowException(ForeignExceptionDispatcher.java:84)
              at org.apache.hadoop.hbase.procedure.Procedure.waitForLatch(Procedure.java:357)
              at org.apache.hadoop.hbase.procedure.Procedure.call(Procedure.java:203)
              at org.apache.hadoop.hbase.procedure.Procedure.call(Procedure.java:68)
              at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
              at java.util.concurrent.FutureTask.run(FutureTask.java:138)
              at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
              at java.lang.Thread.run(Thread.java:662)
      Caused by: org.apache.hadoop.hbase.errorhandling.ForeignException$ProxyThrowable: java.util.concurrent.CancellationException
              at org.apache.hadoop.hbase.procedure.Subprocedure.cancel(Subprocedure.java:270)
              at org.apache.hadoop.hbase.procedure.Subprocedure.call(Subprocedure.java:202)
              at org.apache.hadoop.hbase.procedure.Subprocedure.call(Subprocedure.java:52)
              ... 5 more
      
      1. hbase-7651.v2.patch
        13 kB
        Jonathan Hsieh
      2. hbase-7651.patch
        20 kB
        Jonathan Hsieh

        Activity

        stack made changes -
        Status Resolved [ 5 ] Closed [ 6 ]
        stack made changes -
        Fix Version/s 0.98.0 [ 12323143 ]
        stack made changes -
        Fix Version/s 0.98.0 [ 12323143 ]
        stack made changes -
        Fix Version/s 0.95.0 [ 12324094 ]
        Fix Version/s 0.96.0 [ 12320040 ]
        Fix Version/s hbase-7290 [ 12323900 ]
        Jonathan Hsieh made changes -
        Fix Version/s hbase-7290 [ 12323900 ]
        Jonathan Hsieh made changes -
        Fix Version/s 0.96.0 [ 12320040 ]
        Fix Version/s hbase-7290 [ 12323900 ]
        Jonathan Hsieh made changes -
        Status Patch Available [ 10002 ] Resolved [ 5 ]
        Hadoop Flags Reviewed [ 10343 ]
        Fix Version/s hbase-7290 [ 12323900 ]
        Resolution Fixed [ 1 ]
        Jonathan Hsieh made changes -
        Status Open [ 1 ] Patch Available [ 10002 ]
        Jonathan Hsieh made changes -
        Attachment hbase-7651.v2.patch [ 12566400 ]
        Jonathan Hsieh made changes -
        Attachment hbase-7651.patch [ 12566345 ]
        Jonathan Hsieh made changes -
        Summary RegionServerSnapshotManager fails with CancellationException if previous fails with in per region task RegionServerSnapshotManager fails with CancellationException if previous snapshot fails in per region task
        Jonathan Hsieh made changes -
        Summary RegionServerSnapshotManager does not accept subsquent snapshots if previous fails with NotServingRegionException. RegionServerSnapshotManager fails with CancellationException if previous fails with in per region task
        Jonathan Hsieh made changes -
        Field Original Value New Value
        Assignee Jonathan Hsieh [ jmhsieh ]
        Jonathan Hsieh created issue -

          People

          • Assignee:
            Jonathan Hsieh
            Reporter:
            Jonathan Hsieh
          • Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development