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()])); }
role.getFollowerState().ifPresent(fs -> { final ServerRpcProto leaderInfo = ServerProtoUtils.toServerRpcProto( getRaftConf().getPeer(state.getLeaderId()), fs.getLastRpcTime().elapsedTimeMs()); roleInfo.setFollowerInfo(FollowerInfoProto.newBuilder() .setLeaderInfo(leaderInfo)
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()])); }