partition leader选举死循环

host A

host B

host A 发起的voting term是884, host B的voting term是824,hostA 拒绝B的voting
host B的lastLogTerm 是15,host A lastLogTerm是0,hostB 拒绝A 的voting

这样陷入leader voting的死循环,导致partition的leader选不出来

最后重启hostA 解决

good catch. 应该是哪里有问题的.

不过是不是还可以考虑下C? A, B互相不认的情况下, C如果投了B, 其实B还是可以获得2票成为leader的?

当时没仔细查C的日志,当时情况是leader一直没选出来,才采取重启的策略

另外有个问题,partition 发起leader选举,是A,B,C同时发voting request吗,还是都随机sleep一段时间后,谁先醒谁voting?看日志像是前者

后者, 不过随机的时间间隔在 1s左右(After sleeping a random period betwen [500ms, 2s]), 可能日志看起来像前者.

浙ICP备20010487号