diff --git a/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.java b/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.java index 2d27c59..968ccbf 100644 --- a/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.java +++ b/hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.java @@ -115,6 +115,7 @@ public class ProcedureTestingUtility { } procExecutor.testing.killBeforeStoreUpdate = value; LOG.warn("Set Kill before store update to: " + procExecutor.testing.killBeforeStoreUpdate); + assertSingleExecutorForKillTests(procExecutor); } public static void setToggleKillBeforeStoreUpdate(ProcedureExecutor procExecutor, @@ -123,6 +124,7 @@ public class ProcedureTestingUtility { procExecutor.testing = new ProcedureExecutor.Testing(); } procExecutor.testing.toggleKillBeforeStoreUpdate = value; + assertSingleExecutorForKillTests(procExecutor); } public static void toggleKillBeforeStoreUpdate(ProcedureExecutor procExecutor) { @@ -131,12 +133,23 @@ public class ProcedureTestingUtility { } procExecutor.testing.killBeforeStoreUpdate = !procExecutor.testing.killBeforeStoreUpdate; LOG.warn("Set Kill before store update to: " + procExecutor.testing.killBeforeStoreUpdate); + assertSingleExecutorForKillTests(procExecutor); } public static void setKillAndToggleBeforeStoreUpdate(ProcedureExecutor procExecutor, boolean value) { ProcedureTestingUtility.setKillBeforeStoreUpdate(procExecutor, value); ProcedureTestingUtility.setToggleKillBeforeStoreUpdate(procExecutor, value); + assertSingleExecutorForKillTests(procExecutor); + } + + private static void assertSingleExecutorForKillTests(final ProcedureExecutor procExecutor) { + if (procExecutor.testing == null) return; + if (procExecutor.testing.killBeforeStoreUpdate || + procExecutor.testing.toggleKillBeforeStoreUpdate) { + assertEquals("expected only one executor running during test with kill/restart", + 1, procExecutor.getCorePoolSize()); + } } public static long submitAndWait(Configuration conf, TEnv env, Procedure proc) diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.java index 73134bb..e4f42d6 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/master/procedure/TestMasterFailoverWithProcedures.java @@ -67,6 +67,7 @@ public class TestMasterFailoverWithProcedures { conf.setInt(WALProcedureStore.WAIT_BEFORE_ROLL_CONF_KEY, 0); conf.setInt(WALProcedureStore.ROLL_RETRIES_CONF_KEY, 1); conf.setInt(WALProcedureStore.MAX_SYNC_FAILURE_ROLL_CONF_KEY, 1); + conf.setInt(MasterProcedureConstants.MASTER_PROCEDURE_THREADS, 1); } @Before