static RaftPeerId getLeader(ServerState state) { final RaftPeerId leader = state.getLeaderId(); if (leader == null) { throw new IllegalStateException("No leader yet"); } return leader; } }
static RaftPeerId getLeader(ServerState state) { final RaftPeerId leader = state.getLeaderId(); if (leader == null) { throw new IllegalStateException("No leader yet"); } return leader; } }
@Override public String getLeaderId() { return getState().getLeaderId().toString(); }
@Override public String getLeaderId() { return getState().getLeaderId().toString(); }
NotLeaderException generateNotLeaderException() { if (lifeCycle.getCurrentState() != RUNNING) { return new NotLeaderException(getId(), null, null); } RaftPeerId leaderId = state.getLeaderId(); if (leaderId == null || leaderId.equals(state.getSelfId())) { // No idea about who is the current leader. Or the peer is the current // leader, but it is about to step down RaftPeer suggestedLeader = getRaftConf().getRandomPeer(state.getSelfId()); leaderId = suggestedLeader == null ? null : suggestedLeader.getId(); } RaftConfiguration conf = getRaftConf(); Collection<RaftPeer> peers = conf.getPeers(); return new NotLeaderException(getId(), conf.getPeer(leaderId), peers.toArray(new RaftPeer[peers.size()])); }
NotLeaderException generateNotLeaderException() { if (lifeCycle.getCurrentState() != RUNNING) { return new NotLeaderException(getId(), null, null); } RaftPeerId leaderId = state.getLeaderId(); if (leaderId == null || leaderId.equals(state.getSelfId())) { // No idea about who is the current leader. Or the peer is the current // leader, but it is about to step down RaftPeer suggestedLeader = getRaftConf().getRandomPeer(state.getSelfId()); leaderId = suggestedLeader == null ? null : suggestedLeader.getId(); } RaftConfiguration conf = getRaftConf(); Collection<RaftPeer> peers = conf.getPeers(); return new NotLeaderException(getId(), conf.getPeer(leaderId), peers.toArray(new RaftPeer[peers.size()])); }
if (shouldWithholdVotes(candidateTerm)) { LOG.info("{}-{}: Withhold vote from candidate {} with term {}. State: leader={}, term={}, lastRpcElapsed={}", getId(), role, candidateId, candidateTerm, state.getLeaderId(), state.getCurrentTerm(), fs != null? fs.getLastRpcTime().elapsedTimeMs() + "ms": null); } else if (state.recognizeCandidate(candidateId, candidateTerm)) {
if (shouldWithholdVotes(candidateTerm)) { LOG.info("{}-{}: Withhold vote from candidate {} with term {}. State: leader={}, term={}, lastRpcElapsed={}", getId(), role, candidateId, candidateTerm, state.getLeaderId(), state.getCurrentTerm(), isFollower()? heartbeatMonitor.getLastRpcTime().elapsedTimeMs() + "ms": null); } else if (state.recognizeCandidate(candidateId, candidateTerm)) {
role.getFollowerState().ifPresent(fs -> { final ServerRpcProto leaderInfo = ServerProtoUtils.toServerRpcProto( getRaftConf().getPeer(state.getLeaderId()), fs.getLastRpcTime().elapsedTimeMs()); roleInfo.setFollowerInfo(FollowerInfoProto.newBuilder() .setLeaderInfo(leaderInfo)