-
Type:
Improvement
-
Resolution: Won't Fix
-
Priority:
Minor - P4
-
None
-
Affects Version/s: 2.6.1
-
Component/s: Replication
-
None
-
None
-
3
-
None
-
None
-
None
-
None
-
None
-
None
Currently, as far as this issue is concerned, elections work as follows. Disregard all normal checks like priority, config, and OpTime.
- in the first round CmdReplSetFresh is sent to all servers, and each respond with something that loosely says "I'll probably vote yes" or "I'll probably vote no".
- in the second round, CmdReplSetElect is run, and each responds with "yes, if I have not voted for anyone else in the last 30 seconds, no otherwise".
After this second round, anyone that voted yes will not vote for anyone else for thirty seconds.
The issue here is that the first round gave false hope. Several machines said "I will likely vote for you", when in reality, the 30 second lease made a yea vote nearly impossible. This results in a failed election attempt, where other nodes that actually voted yea in the failed election are now barred from voting for 30 seconds.
If the first phase takes the last election time into account, then the candidate does not bother with the second phase, and will not inadvertently bar other machines from voting for 30 seconds.
- is related to
-
SERVER-14531 Abort election if freshness check cannot ensure majority of voters
-
- Closed
-