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

Enumerate the possible featureCompatibilityVersion states in one atomic variable

    • Type: Icon: Improvement Improvement
    • Resolution: Fixed
    • Priority: Icon: Major - P3 Major - P3
    • 3.6.0-rc1
    • Affects Version/s: None
    • Component/s: Storage
    • None
    • Storage Execution
    • Fully Compatible
    • Storage 2017-10-23

      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

            Assignee:
            backlog-server-execution [DO NOT USE] Backlog - Storage Execution Team
            Reporter:
            louis.williams@mongodb.com Louis Williams
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: