JournalFaultInjector.get().beforePersistPaxosData(); persistPaxosData(segmentTxId, newData); JournalFaultInjector.get().afterPersistPaxosData();
@Override void beforeCall(InvocationOnMock invocation) throws Exception { if (random.nextFloat() < injectionProbability) { isUp = !isUp; LOG.info("transitioned " + addr + " to " + (isUp ? "up" : "down")); } if (!isUp) { throw new IOException("Injected - faking being down"); } if (invocation.getMethod().getName().equals("acceptRecovery")) { if (random.nextFloat() < injectionProbability) { Mockito.doThrow(new IOException( "Injected - faking fault before persisting paxos data")) .when(faultInjector).beforePersistPaxosData(); } else if (random.nextFloat() < injectionProbability) { Mockito.doThrow(new IOException( "Injected - faking fault after persisting paxos data")) .when(faultInjector).afterPersistPaxosData(); } } }
.beforePersistPaxosData(); tryRecoveryExpectingFailure(); Mockito.reset(faultInjector);
JournalFaultInjector.get().beforePersistPaxosData(); persistPaxosData(segmentTxId, newData); JournalFaultInjector.get().afterPersistPaxosData();
JournalFaultInjector.get().beforePersistPaxosData(); persistPaxosData(segmentTxId, newData); JournalFaultInjector.get().afterPersistPaxosData();