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(); }
return CompletableFuture.completedFuture(this.server.processRequest(request).isAccepted()); result.complete(false); }else{ result.complete(response.isAccepted());
private void handleVotingResponse(RaftResponseMessage response){ this.votesResponded += 1; 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.votesResponded >= 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(); } }
return CompletableFuture.completedFuture(this.server.processRequest(request).isAccepted()); result.complete(false); }else{ result.complete(response.isAccepted());
private void handleVotingResponse(RaftResponseMessage response){ this.votesResponded += 1; 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.votesResponded >= 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(); } }
return CompletableFuture.completedFuture(this.server.processRequest(request).isAccepted()); result.complete(false); }else{ result.complete(response.isAccepted());
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(); } }
getOrCreateRpcClient().send(request).whenCompleteAsync((RaftResponseMessage response, Throwable error) -> { if(error == null){ logger.debug("response from remote server, leader: %d, accepted: %s", response.getDestination(), String.valueOf(response.isAccepted())); if(response.isAccepted()){ future.complete(true); }else{
getOrCreateRpcClient().send(request).whenCompleteAsync((RaftResponseMessage response, Throwable error) -> { if(error == null){ logger.debug("response from remote server, leader: %d, accepted: %s", response.getDestination(), String.valueOf(response.isAccepted())); if(response.isAccepted()){ future.complete(true); }else{
if(response.isAccepted()){ synchronized(peer){ peer.setNextLogIndex(response.getNextIndex());
response.getMessageType().toString(), response.getSource(), String.valueOf(response.isAccepted()), response.getTerm(), response.getNextIndex());
response.getMessageType().toString(), response.getSource(), String.valueOf(response.isAccepted()), response.getTerm(), response.getNextIndex());
response.getMessageType().toString(), response.getSource(), String.valueOf(response.isAccepted()), response.getTerm(), response.getNextIndex());
response.getMessageType().toString(), response.getDestination(), String.valueOf(response.isAccepted()), response.getTerm(), response.getNextIndex());
response.getMessageType().toString(), response.getDestination(), String.valueOf(response.isAccepted()), response.getTerm(), response.getNextIndex());
response.getMessageType().toString(), response.getDestination(), String.valueOf(response.isAccepted()), response.getTerm(), response.getNextIndex());
if(response.isAccepted()){ synchronized(peer){ SnapshotSyncContext context = peer.getSnapshotSyncContext();
if(response.isAccepted()){ synchronized(peer){ SnapshotSyncContext context = peer.getSnapshotSyncContext();
if(response.isAccepted()){ synchronized(peer){ SnapshotSyncContext context = peer.getSnapshotSyncContext();