[SERVER-78115] Shard primaries must commit a majority write before using new routing information from the config server Created: 15/Jun/23 Updated: 02/Feb/24 Resolved: 22/Aug/23 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | 3.6.23, 4.0.28, 4.2.24, 7.1.0-rc0, 6.0.6, 4.4.22, 5.0.18, 7.0.0-rc3 |
| Fix Version/s: | 7.1.0-rc0, 7.0.3, 6.0.12, 5.0.23 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Allison Easton | Assignee: | Allison Easton |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Attachments: |
|
||||||||||||||||||||||||||||||||||||||||||||||||
| Issue Links: |
|
||||||||||||||||||||||||||||||||||||||||||||||||
| Backwards Compatibility: | Fully Compatible | ||||||||||||||||||||||||||||||||||||||||||||||||
| Operating System: | ALL | ||||||||||||||||||||||||||||||||||||||||||||||||
| Backport Requested: |
v7.0, v6.0, v5.0
|
||||||||||||||||||||||||||||||||||||||||||||||||
| Sprint: | Sharding EMEA 2023-06-26, Sharding EMEA 2023-07-10, Sharding EMEA 2023-07-24, Sharding EMEA 2023-08-07, Sharding EMEA 2023-08-21, Sharding EMEA 2023-09-04 | ||||||||||||||||||||||||||||||||||||||||||||||||
| Participants: | |||||||||||||||||||||||||||||||||||||||||||||||||
| Linked BF Score: | 152 | ||||||||||||||||||||||||||||||||||||||||||||||||
| Description |
|
In This write was removed in However, the split brain scenario for which the majority write was added is still a problem, and since the removal of that write, it is possible to hit this again. The scenario is as follows
In this case, the old primary will respond to the majority read using the newest filtering information but without ever having seen the chunk migration. This can also affect secondaries who refresh via the node that believes itself to be primary, causing their filtering information to be ahead of the data they have. The solution here is to add back in the majority noop write to the SSCCL. It will ensure that if new filtering information is found, it can only be used and sent to secondaries by the actual primary of the replica set. |
| Comments |
| Comment by Githook User [ 30/Oct/23 ] |
|
Author: {'name': 'Allison Easton', 'email': 'allison.easton@mongodb.com', 'username': 'allisoneaston'}Message: (cherry picked from commit bd44ce15ffa79d6234221ece8320a9f1775b8042) |
| Comment by Githook User [ 05/Oct/23 ] |
|
Author: {'name': 'Allison Easton', 'email': 'allison.easton@mongodb.com', 'username': 'allisoneaston'}Message: (cherry picked from commit bd44ce15ffa79d6234221ece8320a9f1775b8042) |
| Comment by Githook User [ 19/Sep/23 ] |
|
Author: {'name': 'Allison Easton', 'email': 'allison.easton@mongodb.com', 'username': 'allisoneaston'}Message: (cherry picked from commit bd44ce15ffa79d6234221ece8320a9f1775b8042) |
| Comment by Githook User [ 22/Aug/23 ] |
|
Author: {'name': 'Allison Easton', 'email': 'allison.easton@mongodb.com', 'username': 'allisoneaston'}Message: |
| Comment by Githook User [ 28/Jul/23 ] |
|
Author: {'name': 'Wenbin Zhu', 'email': 'wenbin.zhu@mongodb.com', 'username': 'WenbinZhu'}Message: Revert " This reverts commit e80686185de1633cc657ea2c00e842dc4b402470. |
| Comment by Githook User [ 27/Jul/23 ] |
|
Author: {'name': 'Allison Easton', 'email': 'allison.easton@mongodb.com', 'username': 'allisoneaston'}Message: |