diff options
author | Luxi Liu <luxi.liu@mongodb.com> | 2022-08-19 14:33:19 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-08-19 15:04:15 +0000 |
commit | 4f09355fd05895a9d7e702469d9f52eb206f1680 (patch) | |
tree | 3d0d4f3c827d2a07926193ab07c21ccc8bb9af01 /src/mongo/db/commands | |
parent | 7d7518830818fd84a13c3a408830c3c5ab01117c (diff) | |
download | mongo-4f09355fd05895a9d7e702469d9f52eb206f1680.tar.gz |
SERVER-67946 added downgrading->upgrading path sharding tests
Diffstat (limited to 'src/mongo/db/commands')
-rw-r--r-- | src/mongo/db/commands/feature_compatibility_version.cpp | 4 | ||||
-rw-r--r-- | src/mongo/db/commands/set_feature_compatibility_version_command.cpp | 14 |
2 files changed, 16 insertions, 2 deletions
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<SharedSemiFuture<void>> 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); } |