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

Ensure FCV stability while executing critical paths

    • Fully Compatible

      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.

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

              Created:
              Updated:
              Resolved: