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

Enumerate the possible featureCompatibilityVersion states in one atomic variable

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Closed
    • Major - P3
    • Resolution: Fixed
    • None
    • 3.6.0-rc1
    • Storage
    • None
    • Storage Execution
    • Fully Compatible
    • Storage 2017-10-23

    Description

      There are two separate atomic variables for the version and targetVersion fields in serverGlobalParams. There is a potential for a races when reading the actual state through isFullyUpgradedTo36() and similar accessors, which must read both variables separately.

      The ServerGlobalParams::FeatureCompatiblity::Version enum should enumerate the following states in one atomic variable. Getters and setters should be appropriately modified.

      FeatureCompatibility::Version fCV version fCV targetVersion notes
      kUnset (unset) (unset) a safe getter should return "3.4"
      k34 3.4 (unset)
      kUpgradingTo36 3.4 3.6
      k36 3.6 (unset)
      kDowngradingTo34 3.4 3.4

      Attachments

        Activity

          People

            backlog-server-execution Backlog - Storage Execution Team
            louis.williams@mongodb.com Louis Williams
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: