From 90d97f74bb8a9708e481efef80186c207ab6540d Mon Sep 17 00:00:00 2001 From: Umesh Agashe Date: Mon, 22 Jan 2018 13:23:41 -0800 Subject: [PATCH] HBASE-19839 Fixed flakey TestMergeTableRegionsProcedure#testRollbackAndDoubleExecution --- .../hbase/master/procedure/MasterProcedureTestingUtility.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java index 243bb1487d53fd554ef3fe02f4d099ce581697cd..42e2f01ff5e32bc4505bf49a7b302ac915f6c2dc 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureTestingUtility.java @@ -448,6 +448,17 @@ public class MasterProcedureTestingUtility { assertTrue(procExec.unregisterListener(abortListener)); } + // Sometimes there are other procedures still executing (including asynchronously spawned by + // procId) and due to KillAndToggleBeforeStoreUpdate flag ProcedureExecutor is stopped before + // store update. Let all pending procedures finish normally. + if (!procExec.isRunning()) { + LOG.warn("ProcedureExecutor not running, may have been stopped by pending procedure due to" + + " KillAndToggleBeforeStoreUpdate flag."); + ProcedureTestingUtility.setKillAndToggleBeforeStoreUpdate(procExec, false); + restartMasterProcedureExecutor(procExec); + ProcedureTestingUtility.waitNoProcedureRunning(procExec); + } + assertEquals(true, procExec.isRunning()); ProcedureTestingUtility.assertIsAbortException(procExec.getResult(procId)); } -- 2.10.1 (Apple Git-78)