[ https://issues.apache.org/jira/browse/HBASE-7651?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13564568#comment-13564568 ]
Jonathan Hsieh commented on HBASE-7651: --------------------------------------- On a loaded 5 node cluster taking an online flush snapshot takes around 2-10 seconds. Cloning is much more variable 5-10 seconds with spikes the order of a minute. I believe much of this time because enabling is slow (often triggers compactions). On the larger cluster it is closer to 5-30s to take, and 10-25s with a few that take minutes to clone. It is not as robust on the larger case -- I'm actually getting quite a few timeouts and am investigating them further. > RegionServerSnapshotManager fails with CancellationException if previous > snapshot fails in per region task > ---------------------------------------------------------------------------------------------------------- > > Key: HBASE-7651 > URL: https://issues.apache.org/jira/browse/HBASE-7651 > Project: HBase > Issue Type: Sub-task > Components: snapshots > Affects Versions: hbase-7290 > Reporter: Jonathan Hsieh > Assignee: Jonathan Hsieh > Priority: Blocker > Fix For: hbase-7290 > > Attachments: hbase-7651.patch, hbase-7651.v2.patch > > > 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) > {code} > 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 > {code} > Subsequent snapshot attempts that require jon-snapshot-2 to participate fail > like this: > {code} > 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 > {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira