cita-cloud / consensus_raft

The raft consensus component for CITA Cloud.
Apache License 2.0
3 stars 0 forks source link

删除leader共识停止 #57

Closed NaughtyDogOfSchrodinger closed 1 year ago

NaughtyDogOfSchrodinger commented 1 year ago

现象: 集成测试update-validators如果删除的是leader,leader会无法propose

截屏2022-09-15 17 08 25

follwer收不到leader的消息

截屏2022-09-15 17 10 15

问题: https://github.com/cita-cloud/consensus_raft/blob/3bf6f7a07ed053ccfd34e3581fb717e5747146c5/src/peer.rs#L439-L455 由于共识节点列表中leader被删除,共识的区块一直无法发给follwer 由于last_time_start_fetching只有在pending_proposal为空时才会赋值,并且propose一直失败,pending_proposal一直存在 https://github.com/cita-cloud/consensus_raft/blob/3bf6f7a07ed053ccfd34e3581fb717e5747146c5/src/peer.rs#L366-L377 所以leader一直无法触发transfer_leader,共识过程停止,并且follower无法触发transfer_leader https://github.com/cita-cloud/consensus_raft/blob/3bf6f7a07ed053ccfd34e3581fb717e5747146c5/src/peer.rs#L468-L499

Jayanring commented 1 year ago

fixed