public static PaxosLeadershipEventRecorder create(MetricRegistry metrics, String leaderUuid) { return create(metrics, leaderUuid, null); }
public static PaxosLeadershipEventRecorder create(MetricRegistry metrics, String leaderUuid, LeadershipObserver observer) { return new PaxosLeadershipEventRecorder( new LeadershipEvents(metrics), leaderUuid, Optional.ofNullable(observer)); }
private synchronized void recordNewRound(PaxosValue round) { if (isLeading) { events.lostLeadershipFor(currentRound); leadershipObserver.ifPresent(LeadershipObserver::lostLeadership); } if (isLeaderFor(round)) { events.gainedLeadershipFor(round); leadershipObserver.ifPresent(LeadershipObserver::gainedLeadership); } currentRound = round; isLeading = isLeaderFor(round); }
@Override public synchronized void recordRound(PaxosValue round) { if (isNewRound(round)) { recordNewRound(round); } }
@Override public synchronized void recordNotLeading(PaxosValue value) { if (isSameRound(value) && isLeading) { events.lostLeadershipFor(value); leadershipObserver.ifPresent(LeadershipObserver::lostLeadership); isLeading = false; } }
@Test public void recordsLeaderPingFailure() throws InterruptedException { RuntimeException error = new RuntimeException("foo"); CompletableFuture<Boolean> pingFuture = new CompletableFuture<>(); pingFuture.completeExceptionally(error); boolean result = electionService.getAndRecordLeaderPingResult(pingFuture); assertThat(result).isFalse(); verify(recorder).recordLeaderPingFailure(error); verifyNoMoreInteractions(recorder); }
@Override public synchronized void recordRound(PaxosValue round) { if (isNewRound(round)) { recordNewRound(round); } }
@Override public synchronized void recordNoQuorum(PaxosValue value) { if (isSameRound(value)) { events.noQuorum(value); } }
@Test public void recordsLeaderPingFailure() { Throwable error = new RuntimeException("foo"); recorder.recordLeaderPingFailure(error); verify(events).leaderPingFailure(error); }
public static PaxosLeadershipEventRecorder create(MetricRegistry metrics, String leaderUuid) { return create(metrics, leaderUuid, null); }
@Override public synchronized void recordNoQuorum(PaxosValue value) { if (isSameRound(value)) { events.noQuorum(value); } }
public static PaxosLeadershipEventRecorder create(MetricRegistry metrics, String leaderUuid, LeadershipObserver observer) { return new PaxosLeadershipEventRecorder( new LeadershipEvents(metrics), leaderUuid, Optional.ofNullable(observer)); }
private synchronized void recordNewRound(PaxosValue round) { if (isLeading) { events.lostLeadershipFor(currentRound); leadershipObserver.ifPresent(LeadershipObserver::lostLeadership); } if (isLeaderFor(round)) { events.gainedLeadershipFor(round); leadershipObserver.ifPresent(LeadershipObserver::gainedLeadership); } currentRound = round; isLeading = isLeaderFor(round); }
PaxosLeadershipEventRecorder leadershipEventRecorder = PaxosLeadershipEventRecorder.create( metricsManager.getRegistry(), leaderUuid.toString(), leadershipObserver);
@Override public synchronized void recordNotLeading(PaxosValue value) { if (isSameRound(value) && isLeading) { events.lostLeadershipFor(value); leadershipObserver.ifPresent(LeadershipObserver::lostLeadership); isLeading = false; } }
PaxosLeadershipEventRecorder leadershipEventRecorder = PaxosLeadershipEventRecorder.create( metricsManager.getRegistry(), leaderUuid.toString(), leadershipObserver);