[SERVER-53092] Ensure FCV stability while executing critical paths Created: 27/Nov/20  Updated: 29/Oct/23  Resolved: 18/Feb/21

Status: Closed
Project: Core Server
Component/s: Sharding
Affects Version/s: None
Fix Version/s: 4.9.0

Type: Task Priority: Major - P3
Reporter: Pierlauro Sciarelli Assignee: Jordi Serra Torrens
Resolution: Fixed Votes: 0
Labels: PM-1965-Milestone-0-Metadata-Format
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Backwards Compatibility: Fully Compatible
Participants:

 Description   

In order to ensure FCV stability without holding the FCV lock during expensive operations, it will need to be implemented a component enclosing the following logic:

  1. Take FCV lock in Shared mode
  2. Quickly check what is the current FCV and make up some decision about what to do (return or go to step 3)
  3. Write some Placeholder somewhere (most likely this will be the Primary Only Service) to indicate that there is an operation running under a specific FCV version
  4. Release the FCV lock
  5. Do the expensive/network communicating work outside of any locks and possibly on a different thread, etc...
  6. Remove the Placeholder from (3)

The Placeholder from (3), which will be used to decide whether it's allowed to [down|up]grade the FCV: it will be needed to wait for all of the Placeholder(s) to drain before setting the FCV to a different version.



 Comments   
Comment by Githook User [ 18/Feb/21 ]

Author:

{'name': 'Jordi Serra Torrens', 'email': 'jordi.serra-torrens@mongodb.com', 'username': 'jordist'}

Message: SERVER-53092: Ensure FCV stability while executing DDL critical paths
Branch: master
https://github.com/mongodb/mongo/commit/aac35501ac8d4cea15e69ad6230d99761682ef65

Generated at Thu Feb 08 05:29:54 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.