Mixed-binary / multiversion fixtures still enable IFR flags on “new” mongods (and mongos) when feature-flag suites are on

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Fixed
    • Priority: Major - P3
    • 9.0.0-rc0
    • Affects Version/s: None
    • Component/s: None
    • None
    • Query Integration
    • Fully Compatible
    • ALL
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      Summary
      When resmoke runs with a non-empty ENABLED_FEATURE_FLAGS list (e.g. --runAllFeatureFlagTests), we inject every enabled flag into mongod_options["set_parameters"] as "true" for new-binary processes. In multiversion topologies we only skip that injection for old-binary fixtures (enable_feature_flags=False in ReplSetBuilder._new_mongod / ShardedClusterBuilder._new_mongos). New binaries in the same mixed cluster still get the full flag list, including incremental rollout (IFR) parameters.

      Why this is a problem
      IFR flags are meant for controlled, fleet-style rollout and are explicitly not FCV-gated the same way as FCV-gated feature flags. Forcing them all on on latest binaries while other nodes run older binaries is not a configuration we document or intend to represent “real” upgrade paths—and it can hide bugs (e.g. assuming every latest node has IFR on during a rolling upgrade) or create invalid / untested combinations relative to how we expect IFR to be used in production.

      Expected behavior
      In any mixed-binary scenario, we probably should not auto-enable IFR flags via the fixture/shell ENABLED_FEATURE_FLAGS injection—similar in spirit to “we do not run old versions with feature flags enabled,” but extended so IFR isn’t bulk-enabled for any process in that topology unless a test opts in explicitly.

      Where this happens (code pointers)

      • buildscripts/resmokelib/testing/fixtures/_builder.pymake_fixture passes add_feature_flags=bool(config.ENABLED_FEATURE_FLAGS) into MongoDFixture / _MongoSFixture when enable_feature_flags is true; multiversion only sets enable_feature_flags=False for the old side of the container, not for new binaries in a mixed cluster.
      • buildscripts/resmokelib/testing/fixtures/standalone.py (MongoDFixture): if add_feature_flags: for ff in self.config.ENABLED_FEATURE_FLAGS: self.mongod_options["set_parameters"][ff] = "true".
      • buildscripts/resmokelib/core/programs.pymongod_program / _apply_set_parameters turns those into --setParameter on the command line.
      • configure_resmoke.py: builds ENABLED_FEATURE_FLAGS from -runAllFeatureFlagTests (and related options), which includes IFR-related parameters unless separately disabled (e.g. -disableUnreleasedIFRFlags).

            Assignee:
            Finley Lau
            Reporter:
            Finley Lau
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: