-
Type:
Investigation
-
Resolution: Won't Fix
-
Priority:
Major - P3
-
None
-
Affects Version/s: None
-
Component/s: None
-
None
-
Tools and Replicator
This project provides the means for MongoDB Server to remove features across a FCV upgrade.
User or tools that use setFeatureCompatibilityVersion must be prepared for upgrades to fail with the CannotUpgrade error code. This indicates that the cluster is using a feature which has been removed on the target FCV, and the cluster must stop using that feature in order to upgrade.
This project does not remove any particular feature. Any particular feature deprecation will be notified to downstream teams in advance, with this process being defined as part of WRITING-32808.
After this project, upgrade/downgrade failures due to incompatible user data (CannotUpgrade / CannotDowngrade error codes) are not expected to leave the FCV in the upgrading/downgrading state. If setFCV is interrupted during upgrade/downgrade, there's always a path ahead without manual intervention, either by returning to the original FCV or completing the change to the new FCV.
This project also adds a new dry-run mode to setFCV, to check if an FCV upgrade/downgrade is using any incompatible/removed features.
For more information, please check the Scope of the project.
Public-facing documentation changes are requested under SERVER-105829, DOCSP-53107, DOCSP-53109.
Internal documentation the dry-run mode is in FCV_AND_FEATURE_FLAGS_README.md.
Internal documentation on how to add upgrade feasibility checks is in FCV_AND_FEATURE_FLAGS_README.md.
Description of Linked Ticket
Summary
Prevent and mitigate the effects of failed MongoDB FCV upgrades due to forward incompatible features.
Motivation
Newer MongoDB Server releases may decide to remove or substantially change features from previous versions (for example, discontinuing problematic features such as time series collections sharded on time, or preview features) - we will refer to those as “forward incompatible features”.
During the MongoDB 8.0 rollout, we discovered that our infrastructure for phasing out forwards incompatible features on FCV upgrade causes significant pain for customers and release/support teams. If a forward incompatible feature is in use during an FCV upgrade, it fails and the cluster can neither complete the upgrade without manual intervention, nor return to the original FCV. In this state, issues associated with the upgrade can not be timely remediated (e.g. failed backup and restore plans in HELP-69056 and HELP-65519).
This project resolves this by allowing downgrading back to the original FCV without completing the failed upgrade. This is reciprocal to the solution from SPM-2821 for failed downgrades.
Furthermore, it will add a “dry-run” mode to the setFCV command, which allows customers to anticipate any failure that would occur during an actual upgrade.