From 4f09355fd05895a9d7e702469d9f52eb206f1680 Mon Sep 17 00:00:00 2001 From: Luxi Liu Date: Fri, 19 Aug 2022 14:33:19 +0000 Subject: SERVER-67946 added downgrading->upgrading path sharding tests --- src/mongo/db/commands/feature_compatibility_version.cpp | 4 ++-- .../commands/set_feature_compatibility_version_command.cpp | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src/mongo/db/commands') diff --git a/src/mongo/db/commands/feature_compatibility_version.cpp b/src/mongo/db/commands/feature_compatibility_version.cpp index 674be1c4ff1..8ad7cae43f6 100644 --- a/src/mongo/db/commands/feature_compatibility_version.cpp +++ b/src/mongo/db/commands/feature_compatibility_version.cpp @@ -329,10 +329,10 @@ void FeatureCompatibilityVersion::updateFeatureCompatibilityVersionDocument( // Only transition to fully upgraded or downgraded states when we // have completed all required upgrade/downgrade behavior. + // If kDowngradingFromLatestToLastLTS->kLatest, we want to get the transitional version + // i.e. kUpgradingFromLastLTSToLatest auto transitioningVersion = setTargetVersion && serverGlobalParams.featureCompatibility.isUpgradingOrDowngrading(fromVersion) && - // if kDowngradingFromLatestToLastLTS->kLatest, we want to get the transitional version - // i.e. kUpgradingFromLastLTSToLatest !(fromVersion == GenericFCV::kDowngradingFromLatestToLastLTS && newVersion == GenericFCV::kLatest) ? fromVersion diff --git a/src/mongo/db/commands/set_feature_compatibility_version_command.cpp b/src/mongo/db/commands/set_feature_compatibility_version_command.cpp index 1b1e280ecd2..6ce53c6258b 100644 --- a/src/mongo/db/commands/set_feature_compatibility_version_command.cpp +++ b/src/mongo/db/commands/set_feature_compatibility_version_command.cpp @@ -103,11 +103,14 @@ namespace { using GenericFCV = multiversion::GenericFCV; +MONGO_FAIL_POINT_DEFINE(failBeforeTransitioning); MONGO_FAIL_POINT_DEFINE(failUpgrading); MONGO_FAIL_POINT_DEFINE(hangWhileUpgrading); +MONGO_FAIL_POINT_DEFINE(failBeforeSendingShardsToDowngrading); MONGO_FAIL_POINT_DEFINE(failDowngrading); MONGO_FAIL_POINT_DEFINE(hangWhileDowngrading); MONGO_FAIL_POINT_DEFINE(hangBeforeUpdatingFcvDoc); +MONGO_FAIL_POINT_DEFINE(failBeforeUpdatingFcvDoc); /** * Ensures that only one instance of setFeatureCompatibilityVersion can run at a given time. @@ -332,6 +335,10 @@ public: const auto fcvChangeRegion( FeatureCompatibilityVersion::enterFCVChangeRegion(opCtx)); + uassert(ErrorCodes::Error(6744303), + "Failing upgrade due to 'failBeforeTransitioning' failpoint set", + !failBeforeTransitioning.shouldFail()); + FeatureCompatibilityVersion::updateFeatureCompatibilityVersionDocument( opCtx, actualVersion, @@ -392,6 +399,10 @@ public: // downgraded requestedVersion. const auto fcvChangeRegion(FeatureCompatibilityVersion::enterFCVChangeRegion(opCtx)); + uassert(ErrorCodes::Error(6794601), + "Failing downgrade due to 'failBeforeUpdatingFcvDoc' failpoint set", + !failBeforeUpdatingFcvDoc.shouldFail()); + hangBeforeUpdatingFcvDoc.pauseWhileSet(); FeatureCompatibilityVersion::updateFeatureCompatibilityVersionDocument( @@ -731,6 +742,9 @@ private: boost::optional> chunkResizeAsyncTask; if (serverGlobalParams.clusterRole == ClusterRole::ConfigServer) { + uassert(ErrorCodes::Error(6794600), + "Failing downgrade due to 'failBeforeSendingShardsToDowngrading' failpoint set", + !failBeforeSendingShardsToDowngrading.shouldFail()); // Tell the shards to enter phase-1 of setFCV _sendSetFCVRequestToShards(opCtx, request, changeTimestamp, SetFCVPhaseEnum::kStart); } -- cgit v1.2.1