diff options
author | Ali Mir <ali.mir@mongodb.com> | 2021-02-01 23:48:29 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-02-05 08:23:01 +0000 |
commit | 23d20aefc26f110da7ffee7c9b7ba1c33751b538 (patch) | |
tree | 5497278c3ae4c6321b3263827f1d0d0dfbc437f0 /src/mongo/db/commands/feature_compatibility_version.cpp | |
parent | 3cacfa01fb7c149893726e0481824ba458250c50 (diff) | |
download | mongo-23d20aefc26f110da7ffee7c9b7ba1c33751b538.tar.gz |
SERVER-53894 Ensure updateFeatureCompatibilityVersionDocument() is idempotent
Diffstat (limited to 'src/mongo/db/commands/feature_compatibility_version.cpp')
-rw-r--r-- | src/mongo/db/commands/feature_compatibility_version.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/mongo/db/commands/feature_compatibility_version.cpp b/src/mongo/db/commands/feature_compatibility_version.cpp index 2118149fd5f..4f89b96e307 100644 --- a/src/mongo/db/commands/feature_compatibility_version.cpp +++ b/src/mongo/db/commands/feature_compatibility_version.cpp @@ -259,8 +259,13 @@ void FeatureCompatibilityVersion::updateFeatureCompatibilityVersionDocument( OperationContext* opCtx, ServerGlobalParams::FeatureCompatibility::Version fromVersion, ServerGlobalParams::FeatureCompatibility::Version newVersion, - bool isFromConfigServer) { - auto transitioningVersion = fromVersion == newVersion + bool isFromConfigServer, + bool setTargetVersion) { + + // Only transition to fully upgraded or downgraded states when we + // have completed all required upgrade/downgrade behavior. + auto transitioningVersion = setTargetVersion && + serverGlobalParams.featureCompatibility.isUpgradingOrDowngrading(fromVersion) ? fromVersion : fcvTransitions.getTransitionalVersion(fromVersion, newVersion, isFromConfigServer); FeatureCompatibilityVersionDocument fcvDoc = |