fix(vote): corner case of transfer leader #347
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
transfer leader的corner case
问题场景:
handle_request_vote_request
的时候需要unlock去拿last_log_id
get last_log_id
结束,重新拿到锁,发现term变了,拒绝给b投票。此次transfer leader失败,需要等下次发起选举才能选出新leader,影响了集群的可用性
修改:
disrupted_term
)disrupted_term == previous_term
,则设置disrupted
标志