raft-java icon indicating copy to clipboard operation
raft-java copied to clipboard

voteGranted值,在Vote 阶段是否会被Pre-Vote影响到

Open yunyun22 opened this issue 3 years ago • 1 comments

由于某些原因,如果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;
                }

yunyun22 avatar Sep 02 '22 15:09 yunyun22

但代码实行顺序是先执行proVote,在startVote,也就是proVote成功之后,才会正式的startVote。 所以应该不会出现proVote的回掉结果晚于startVote?

liurongdev avatar Mar 25 '25 05:03 liurongdev