private void handleVotingResponse(RaftResponseMessage response){ if(this.votedServers.contains(response.getSource())) { this.logger.info("Duplicate vote from %d form term %d", response.getSource(), this.state.getTerm()); return; } this.votedServers.add(response.getSource()); if(this.electionCompleted){ this.logger.info("Election completed, will ignore the voting result from this server"); return; } if(response.isAccepted()){ this.votesGranted += 1; } if(this.votedServers.size() >= this.peers.size() + 1){ this.electionCompleted = true; } // got a majority set of granted votes if(this.votesGranted > (this.peers.size() + 1) / 2){ this.logger.info("Server is elected as leader for term %d", this.state.getTerm()); this.electionCompleted = true; this.becomeLeader(); } }
public static byte[] messageToBytes(RaftResponseMessage response){ ByteBuffer buffer = ByteBuffer.allocate(RAFT_RESPONSE_HEADER_SIZE); buffer.put(response.getMessageType().toByte()); buffer.put(intToBytes(response.getSource())); buffer.put(intToBytes(response.getDestination())); buffer.put(longToBytes(response.getTerm())); buffer.put(longToBytes(response.getNextIndex())); buffer.put(booleanToByte(response.isAccepted())); return buffer.array(); }
public static byte[] messageToBytes(RaftResponseMessage response){ ByteBuffer buffer = ByteBuffer.allocate(RAFT_RESPONSE_HEADER_SIZE); buffer.put(response.getMessageType().toByte()); buffer.put(intToBytes(response.getSource())); buffer.put(intToBytes(response.getDestination())); buffer.put(longToBytes(response.getTerm())); buffer.put(longToBytes(response.getNextIndex())); buffer.put(booleanToByte(response.isAccepted())); return buffer.array(); }
i, String.valueOf(response.isAccepted()), response.getSource(), response.getDestination(), response.getMessageType(),
i, String.valueOf(response.isAccepted()), response.getSource(), response.getDestination(), response.getMessageType(),
"Receive a %s message from peer %d with Result=%s, Term=%d, NextIndex=%d", response.getMessageType().toString(), response.getSource(), String.valueOf(response.isAccepted()), response.getTerm(), this.logger.info("Received a peer response from %d that with lower term value %d v.s. %d", response.getSource(), response.getTerm(), this.state.getTerm()); return;
"Receive a %s message from peer %d with Result=%s, Term=%d, NextIndex=%d", response.getMessageType().toString(), response.getSource(), String.valueOf(response.isAccepted()), response.getTerm(), this.logger.info("Received a peer response from %d that with lower term value %d v.s. %d", response.getSource(), response.getTerm(), this.state.getTerm()); return;
"Receive a %s message from peer %d with Result=%s, Term=%d, NextIndex=%d", response.getMessageType().toString(), response.getSource(), String.valueOf(response.isAccepted()), response.getTerm(), this.logger.info("Received a peer response from %d that with lower term value %d v.s. %d", response.getSource(), response.getTerm(), this.state.getTerm()); return;
"Receive an extended %s message from peer %d with Result=%s, Term=%d, NextIndex=%d", response.getMessageType().toString(), response.getSource(), String.valueOf(response.isAccepted()), response.getTerm(), this.removeServerFromCluster(response.getSource()); }else if(response.getMessageType() == RaftMessageType.InstallSnapshotResponse){ if(this.serverToJoin == null){
"Receive an extended %s message from peer %d with Result=%s, Term=%d, NextIndex=%d", response.getMessageType().toString(), response.getSource(), String.valueOf(response.isAccepted()), response.getTerm(), this.removeServerFromCluster(response.getSource()); }else if(response.getMessageType() == RaftMessageType.InstallSnapshotResponse){ if(this.serverToJoin == null){
"Receive an extended %s message from peer %d with Result=%s, Term=%d, NextIndex=%d", response.getMessageType().toString(), response.getSource(), String.valueOf(response.isAccepted()), response.getTerm(), this.removeServerFromCluster(response.getSource()); }else if(response.getMessageType() == RaftMessageType.InstallSnapshotResponse){ if(this.serverToJoin == null){