@Override public LeadershipToken blockOnBecomingLeader() throws InterruptedException { while (true) { LeadershipState currentState = determineLeadershipState(); switch (currentState.status()) { case LEADING: log.info("Successfully became leader!"); return currentState.confirmedToken().get(); case NO_QUORUM: // If we don't have quorum we should just retry our calls. continue; case NOT_LEADING: proposeLeadershipOrWaitForBackoff(currentState); continue; default: throw new IllegalStateException("unknown status: " + currentState.status()); } } }
@Override public LeadershipToken blockOnBecomingLeader() throws InterruptedException { while (true) { LeadershipState currentState = determineLeadershipState(); switch (currentState.status()) { case LEADING: log.info("Successfully became leader!"); return currentState.confirmedToken().get(); case NO_QUORUM: // If we don't have quorum we should just retry our calls. continue; case NOT_LEADING: proposeLeadershipOrWaitForBackoff(currentState); continue; default: throw new IllegalStateException("unknown status: " + currentState.status()); } } }
@Override public Optional<LeadershipToken> getCurrentTokenIfLeading() { return determineLeadershipState().confirmedToken(); }
@Override public Optional<LeadershipToken> getCurrentTokenIfLeading() { return determineLeadershipState().confirmedToken(); }