diff options
author | Huayu Ouyang <huayu.ouyang@mongodb.com> | 2023-04-05 18:31:04 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2023-04-05 23:47:00 +0000 |
commit | e830220d8cb9a07993ad20ebf69e3eb695224096 (patch) | |
tree | ebf1a6e44e47402b41943b897f0426a8a5627d06 /src/mongo/db/commands | |
parent | 4858d4fdec15b9856d2dc06141022bd4c846560b (diff) | |
download | mongo-e830220d8cb9a07993ad20ebf69e3eb695224096.tar.gz |
SERVER-75552 Make set_fcv_to_downgrading_fast.js less brittle
Diffstat (limited to 'src/mongo/db/commands')
-rw-r--r-- | src/mongo/db/commands/set_feature_compatibility_version_command.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
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 31a0757368d..d40ce187ba3 100644 --- a/src/mongo/db/commands/set_feature_compatibility_version_command.cpp +++ b/src/mongo/db/commands/set_feature_compatibility_version_command.cpp @@ -123,6 +123,9 @@ MONGO_FAIL_POINT_DEFINE(failBeforeUpdatingFcvDoc); MONGO_FAIL_POINT_DEFINE(failDowngradingDuringIsCleaningServerMetadata); MONGO_FAIL_POINT_DEFINE(hangBeforeTransitioningToDowngraded); MONGO_FAIL_POINT_DEFINE(hangDowngradingBeforeIsCleaningServerMetadata); +MONGO_FAIL_POINT_DEFINE(failAfterReachingTransitioningState); +MONGO_FAIL_POINT_DEFINE(hangAtSetFCVStart); +MONGO_FAIL_POINT_DEFINE(failAfterSendingShardsToDowngradingOrUpgrading); /** * Ensures that only one instance of setFeatureCompatibilityVersion can run at a given time. @@ -265,6 +268,8 @@ public: const DatabaseName&, const BSONObj& cmdObj, BSONObjBuilder& result) override { + hangAtSetFCVStart.pauseWhileSet(opCtx); + // Ensure that this operation will be killed by the RstlKillOpThread during step-up or // stepdown. opCtx->setAlwaysInterruptAtStepDownOrUp_UNSAFE(); @@ -439,6 +444,11 @@ public: "toVersion"_attr = requestedVersion); } + uassert(ErrorCodes::Error(7555200), + "Failing upgrade or downgrade due to 'failAfterReachingTransitioningState' " + "failpoint set", + !failAfterReachingTransitioningState.shouldFail()); + if (request.getPhase() == SetFCVPhaseEnum::kStart) { invariant(serverGlobalParams.clusterRole.has(ClusterRole::ShardServer)); @@ -476,6 +486,11 @@ public: } } + uassert(ErrorCodes::Error(7555202), + "Failing downgrade due to " + "'failAfterSendingShardsToDowngradingOrUpgrading' failpoint set", + !failAfterSendingShardsToDowngradingOrUpgrading.shouldFail()); + // Any checks and actions that need to be performed before being able to downgrade needs // to be placed on the _prepareToUpgrade and _prepareToDowngrade functions. After the // prepare function complete, a node is not allowed to refuse to upgrade/downgrade. |