Hubert Zhang
Hubert Zhang
fixes #365 @PFZheng PR based on your comment, please help to review.
@PFZheng Could you please help to review?
Also note that C still treat A as the leader of ng0 and reject B as the new leader. How can A give up the leadership by itself?
从以下braft文档中,可以看到braft特意处理了这种节点再次上线,打断复制组的问题。但是我上面的case中,Leader节点A还是接受了重启节点B的prevote和vote,并将自己stepdown。这个问题和lease有关系吗? 我节点A的electiontimeout是1000ms ``` Symmetric network partitioning 原始的RAFT论文中对于对称网络划分的处理是,一个节点再次上线之后,Leader接收到高于currentTerm的RequestVote请求就进行StepDown。这样即使这个节点已经通过RemovePeer删除了,依然会打断当前的Lease,导致复制组不可用。对于这种case可以做些特殊的处理:Leader不接收RequestVote请求,具体情况如下: 对于属于PeerSet中的节点,Leader会在重试的AppendEntries中因为遇到更高的term而StepDown 对于不属于PeerSet中的节点,Leader永远忽略 ```
有计划下个版本fix吗? 比如在leader check prevote的时候加一个condition, 如果leader lease还有效就reject?
另外问一下B节点在重启之后什么情况下会做Prevote,因为Issue问题是random的,大多数B节点重启会直接加入raft group,而不做Prevote。
谢谢 @Yejy813 我可以workaround,主要想问下brpc的开发者,是否有支持新版本protobuf的计划。