Uploaded image for project: 'Core Server'
  1. Core Server
  2. SERVER-53092

Ensure FCV stability while executing critical paths

    XMLWordPrintableJSON

Details

    • Fully Compatible

    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.

      Attachments

        Activity

          People

            jordi.serra-torrens@mongodb.com Jordi Serra Torrens
            pierlauro.sciarelli@mongodb.com Pierlauro Sciarelli
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: