stateIs0/lu-raft-kv

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

Opened this issue · 2 comments

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

我觉得你说的对

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

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