stateIs0 / lu-raft-kv

this is raft java project. raft-kv-storage
https://thinkinjava.cn/2019/01/12/2019/2019-01-12-lu-raft-kv/
Apache License 2.0
771 stars 211 forks source link

感觉Node判断是否选举是否有点问题 #2

Open zyhnjust opened 5 years ago

zyhnjust commented 5 years ago

看了下代码。 Node 如果是follower, 当判断是否要选举的时候, 首先判断了一下自己是否是leader, 如果不是就继续判断是否过了选举时间, 过了就开始选举。 我猜测应该是heartbeat的时候应该延长这个要选择leader的时间, 但是没有看到代码里有判断。 当然这样运行也不会错, 但是多了很多无效的选举。 不知道说的对不?

Zouxxyy commented 4 years ago

我觉得你说的对

解决办法是:在收到心跳或者投票给别人后,都将 preElectionTime 设为当前时间,达到延长的效果

xiedi-w commented 1 year ago

心跳请求也是追加日志rpc一种,作者在追加日志处理中重置了上一次选举的时间。见defaultConsensus#appendEntries