[SERVER-27125] Arbiters in pv1 should vote no in elections if they can see a healthy primary of equal or greater priority to the candidate Created: 18/Nov/16 Updated: 27/Sep/17 Resolved: 25/Jan/17 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | Replication |
| Affects Version/s: | None |
| Fix Version/s: | 3.2.12, 3.4.2, 3.5.2 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Spencer Brody (Inactive) | Assignee: | Jack Mulrow |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Issue Links: |
|
||||||||||||||||||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||||||||||||||||||
| Operating System: | ALL | ||||||||||||||||||||||||||||
| Backport Requested: |
v3.4, v3.2
|
||||||||||||||||||||||||||||
| Sprint: | Repl 2017-01-23, Repl 2017-02-13 | ||||||||||||||||||||||||||||
| Participants: | |||||||||||||||||||||||||||||
| Description |
|
Currently in pv1, the use of arbiters can result in unnecessary flapping during certain kinds of network partitions. Imagine a 3 node replica set with 2 data bearing members and 1 arbiter. If the data bearing members become isolated from each other, but the arbiter can see both, then whichever node is not primary will call for an election and win, the arbiter will transmit the term change to the old primary, which will step down, and then a few seconds later it will call for a new election, which it too shall win, on and on. You wind up with the primary changing every few seconds. Implementing this ticket will prevent that scenario, at the cost of slower failovers for all failovers when using arbiters. |
| Comments |
| Comment by Githook User [ 25/Jan/17 ] |
|
Author: {u'username': u'jsmulrow', u'name': u'Jack Mulrow', u'email': u'jack.mulrow@mongodb.com'}Message: (cherry picked from commit 97718a410d3d40f5c3f01dfae76e7ddd910897af) |
| Comment by Githook User [ 25/Jan/17 ] |
|
Author: {u'username': u'jsmulrow', u'name': u'Jack Mulrow', u'email': u'jack.mulrow@mongodb.com'}Message: (cherry picked from commit 97718a410d3d40f5c3f01dfae76e7ddd910897af) |
| Comment by Githook User [ 24/Jan/17 ] |
|
Author: {u'username': u'jsmulrow', u'name': u'Jack Mulrow', u'email': u'jack.mulrow@mongodb.com'}Message: |
| Comment by Siyuan Zhou [ 24/Jan/17 ] |
|
jack.mulrow, I reverted this commit since it failed on replicasets_legacy test suite. |
| Comment by Githook User [ 24/Jan/17 ] |
|
Author: {u'username': u'visualzhou', u'name': u'Siyuan Zhou', u'email': u'siyuan.zhou@mongodb.com'}Message: Revert " This reverts commit eef6335bbc0eedeb6f50120164ca0f198fb94303. |
| Comment by Githook User [ 23/Jan/17 ] |
|
Author: {u'username': u'jsmulrow', u'name': u'Jack Mulrow', u'email': u'jack.mulrow@mongodb.com'}Message: |
| Comment by Eric Milkie [ 22/Nov/16 ] |
|
It should work, but it will increase failover time. That can be solved via documentation, however. |
| Comment by Spencer Brody (Inactive) [ 22/Nov/16 ] |
|
milkie - I updated the title to account for priorities - does that sound safe to you now? |
| Comment by Eric Milkie [ 21/Nov/16 ] |
|
I think this will mess up priority takeover in 3 node sets. |