raft-java
raft-java copied to clipboard
voteGranted值,在Vote 阶段是否会被Pre-Vote影响到
由于某些原因,如果preVote的回调晚于startVote,那么存在 voteGranted的值是STATE_PRE_CANDIDATE阶段的,而不是STATE_CANDIDATE阶段。voteGranted的赋值是否应该放在条件判断之后?或者是我忽略了某些细节,导致理解不正确?
private class PreVoteResponseCallback implements RpcCallback<RaftProto.VoteResponse> {
@Override
public void success(RaftProto.VoteResponse response) {
lock.lock();
try {
//这里的赋值,是否应该放在条件判断之后?
peer.setVoteGranted(response.getGranted());
if (currentTerm != request.getTerm() || state != NodeState.STATE_PRE_CANDIDATE) {
LOG.info("ignore preVote RPC result");
return;
}
但代码实行顺序是先执行proVote,在startVote,也就是proVote成功之后,才会正式的startVote。 所以应该不会出现proVote的回掉结果晚于startVote?