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

Ensure FCV stability while executing critical paths

    XMLWordPrintable

    Details

    • Backwards Compatibility:
      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

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

              Dates

              Created:
              Updated:
              Resolved: