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

DDL coordinators should snapshot OFCV during FCV upgrade

    • Type: Icon: Task Task
    • Resolution: Unresolved
    • Priority: Icon: Major - P3 Major - P3
    • None
    • Affects Version/s: 8.2.0-rc0
    • Component/s: None
    • None
    • Catalog and Routing
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      Consider a FCV-gated feature flag featureFlagFoo which is enabled on a version equal or greater than the one where featureFlagSnapshotFCVInDDLCoordinators from SPM-4048 is enabled. DDL coordinators should be able to check featureFlagFoo multiple times with all checks consistently returning the feature flag is either enabled or disabled.

      With the current setFeatureCompatibilityVersion logic, this is not guaranteed:

      • A DDL coordinator can start on a FCV where both featureFlagSnapshotFCVInDDLCoordinators and featureFlagFoo are disabled.
      • Since featureFlagSnapshotFCVInDDLCoordinators is disabled, the DDL coordinator will not use operation FCV but rather fall back to checking against the global FCV. It will see that featureFlagFoo is disabled.
      • Concurrently, setFeatureCompatibilityVersion can run and upgrade the FCV to one where featureFlagFoo is enabled.
      • Since the DDL coordinator still checks against the global FCV, it will see that featureFlagFoo is enabled, violating the above requirement.

      To avoid this, we should start snapshotting operation FCV into DDL coordinators already in the kUpgrading phase, and then drain all DDL coordinators without OFCV. We should be able to extend the changes from SERVER-101613 and SERVER-101615 for this.

            Assignee:
            Unassigned Unassigned
            Reporter:
            joan.bruguera-mico@mongodb.com Joan Bruguera Micó
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              None
              None
              None
              None