-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Major - P3
-
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.py: make_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.py: mongod_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).
- is depended on by
-
SERVER-42282 Consider replacing CommandOnShardedViewNotSupportedOnMongod mechanism with rewrite / routing from shard
-
- Closed
-
- related to
-
SERVER-123863 FCV-gate IFR flags that have serialization FCV versions
-
- Closed
-