[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: SERVER-74193 Make replaceCollectionGlobalIndexes idempotent
Branch: master
https://github.com/mongodb/mongo/commit/9343847b0dd91814eab8241aa849704bf4bbda0a

Generated at Thu Feb 08 06:26:46 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.