use of org.apache.hadoop.hbase.ProcedureInfo in project hbase by apache.
the class TestProcedureRecovery method testStateMachineMultipleLevel.
@Test(timeout = 30000)
public void testStateMachineMultipleLevel() throws Exception {
long procId = procExecutor.submitProcedure(new TestStateMachineProcedure(true));
// Wait the completion
ProcedureTestingUtility.waitProcedure(procExecutor, procId);
ProcedureInfo result = procExecutor.getResult(procId);
ProcedureTestingUtility.assertProcNotFailed(result);
assertEquals(19, Bytes.toInt(result.getResult()));
assertEquals(4, procExecutor.getLastProcId());
}
use of org.apache.hadoop.hbase.ProcedureInfo in project hbase by apache.
the class TestProcedureRecovery method testSingleStepProcRecovery.
@Test(timeout = 30000)
public void testSingleStepProcRecovery() throws Exception {
Procedure proc = new TestSingleStepProcedure();
procExecutor.testing.killBeforeStoreUpdate = true;
long procId = ProcedureTestingUtility.submitAndWait(procExecutor, proc);
assertFalse(procExecutor.isRunning());
procExecutor.testing.killBeforeStoreUpdate = false;
// Restart and verify that the procedures restart
long restartTs = EnvironmentEdgeManager.currentTime();
restart();
waitProcedure(procId);
ProcedureInfo result = procExecutor.getResult(procId);
assertTrue(result.getLastUpdate() > restartTs);
ProcedureTestingUtility.assertProcNotFailed(result);
assertEquals(1, Bytes.toInt(result.getResult()));
long resultTs = result.getLastUpdate();
// Verify that after another restart the result is still there
restart();
result = procExecutor.getResult(procId);
ProcedureTestingUtility.assertProcNotFailed(result);
assertEquals(resultTs, result.getLastUpdate());
assertEquals(1, Bytes.toInt(result.getResult()));
}
use of org.apache.hadoop.hbase.ProcedureInfo in project hbase by apache.
the class ProcedureTestingUtility method assertProcNotFailed.
public static <TEnv> void assertProcNotFailed(ProcedureExecutor<TEnv> procExecutor, long procId) {
ProcedureInfo result = procExecutor.getResult(procId);
assertTrue("expected procedure result", result != null);
assertProcNotFailed(result);
}
use of org.apache.hadoop.hbase.ProcedureInfo in project hbase by apache.
the class TestProcedureExecution method testAbortTimeoutWithChildren.
@Test(timeout = 30000)
public void testAbortTimeoutWithChildren() {
List<String> state = new ArrayList<>();
Procedure proc = new TestWaitingProcedure("wproc", state, true);
proc.setTimeout(2500);
long rootId = ProcedureTestingUtility.submitAndWait(procExecutor, proc);
LOG.info(state);
ProcedureInfo result = procExecutor.getResult(rootId);
assertTrue(state.toString(), result.isFailed());
ProcedureTestingUtility.assertIsTimeoutException(result);
assertEquals(state.toString(), 4, state.size());
assertEquals("wproc-execute", state.get(0));
assertEquals("wproc-child-execute", state.get(1));
assertEquals("wproc-child-rollback", state.get(2));
assertEquals("wproc-rollback", state.get(3));
}
use of org.apache.hadoop.hbase.ProcedureInfo in project hbase by apache.
the class TestProcedureExecution method testRollbackRetriableFailure.
@Test(timeout = 30000)
public void testRollbackRetriableFailure() {
long procId = ProcedureTestingUtility.submitAndWait(procExecutor, new TestFaultyRollback());
ProcedureInfo result = procExecutor.getResult(procId);
assertTrue("expected a failure", result.isFailed());
LOG.info(result.getException().getMessage());
Throwable cause = ProcedureTestingUtility.getExceptionCause(result);
assertTrue("expected TestProcedureException, got " + cause, cause instanceof TestProcedureException);
}
Aggregations