[SERVER-74193] Sharding index catalog replace is not idempotent and observers can be executed on rollback Created: 20/Feb/23 Updated: 29/Oct/23 Resolved: 22/Feb/23 |
|
| Status: | Closed |
| Project: | Core Server |
| Component/s: | None |
| Affects Version/s: | None |
| Fix Version/s: | 7.0.0-rc0 |
| Type: | Bug | Priority: | Major - P3 |
| Reporter: | Marcos José Grillo Ramirez | Assignee: | Marcos José Grillo Ramirez |
| Resolution: | Fixed | Votes: | 0 |
| Labels: | PM-2583-Milestone-3 | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Backwards Compatibility: | Fully Compatible |
| Operating System: | ALL |
| Sprint: | Sharding EMEA 2023-02-20, Sharding EMEA 2023-03-06 |
| Participants: |
| Description |
|
Oplog entries can be re-applied during a rollback, which means that functions related to sharding's index catalog must be idempotent, and most check the latest index version before doing anything. Most functions have this check, except replace. The purpose of this ticket is to add the check for replace. Additionally, the shard server op observer in-memory changes for the index catalog currently can be executed during recovery, which makes it hard to reason about the observers actions overall. We could add a check to prevent them doing anything if we are in recovery, and let the sharding recovery service to handle the in-memory state. |
| Comments |
| Comment by Githook User [ 21/Feb/23 ] |
|
Author: {'name': 'Marcos José Grillo Ramirez', 'email': 'marcos.grillo@mongodb.com', 'username': 'm4nti5'}Message: |