diff options
author | wenqinYe <wenqin908@gmail.com> | 2023-02-15 22:34:01 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2023-02-16 05:29:18 +0000 |
commit | c7348303489ddd5e6fbaf89fda55e33810023130 (patch) | |
tree | b021f33bef967c0924289c77b299d7ba0c6fbf33 /jstests/multiVersion | |
parent | 924f756576cfaad5a4253736394ae3e8973c79bb (diff) | |
download | mongo-c7348303489ddd5e6fbaf89fda55e33810023130.tar.gz |
SERVER-73277: Prevent downgrading to FCV lower than 7.0 when the catalog shard contains user data
Diffstat (limited to 'jstests/multiVersion')
-rw-r--r-- | jstests/multiVersion/targetedTestsLastLtsFeatures/set_fcv_prevent_invalid_downgrade_with_catalog_shard.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/jstests/multiVersion/targetedTestsLastLtsFeatures/set_fcv_prevent_invalid_downgrade_with_catalog_shard.js b/jstests/multiVersion/targetedTestsLastLtsFeatures/set_fcv_prevent_invalid_downgrade_with_catalog_shard.js new file mode 100644 index 00000000000..18cffdc6758 --- /dev/null +++ b/jstests/multiVersion/targetedTestsLastLtsFeatures/set_fcv_prevent_invalid_downgrade_with_catalog_shard.js @@ -0,0 +1,41 @@ +/** + * Test to ensure that: + * 1. The FCV cannot be downgraded to a version that does not have catalog shards if catalog + * shard is enabled. + * 2. If the FCV does get downgraded to a version that does not support catalog shards, a + * catalog shard cannot be created (this can occur if an FCV downgrade happens concurrently + * with the creation of a catalog shard). + * + * @tags: [featureFlagCatalogShard] + */ +(function() { +"use strict"; + +/* Downgrading FCV to an unsupported version when catalogShard is enabled. */ +jsTest.log("Downgrading FCV to an unsupported version when catalogShard is enabled."); +var st = new ShardingTest({catalogShard: true}); +var mongosAdminDB = st.s.getDB("admin"); + +assert.commandFailed(mongosAdminDB.runCommand({setFeatureCompatibilityVersion: lastLTSFCV}), + `cannot downgrade featureCompatibilityVersion to ${ + lastLTSFCV} when catalog shard is enabled as it may result in data loss`); + +var res = st.config0.getDB("admin").runCommand({getParameter: 1, featureCompatibilityVersion: 1}); +assert(res.featureCompatibilityVersion); +assert.eq(res.featureCompatibilityVersion.version, latestFCV); + +st.stop(); + +/* Attempting to create a catalogShard on an unsupported FCV. */ +jsTest.log("Attempting to create a catalogShard on an unsupported FCV."); +const kCatalogShardId = "catalogShard"; +st = new ShardingTest({catalogShard: false}); +mongosAdminDB = st.s.getDB("admin"); + +assert.commandWorked(mongosAdminDB.runCommand({setFeatureCompatibilityVersion: lastLTSFCV})); +assert.commandFailed( + mongosAdminDB.runCommand({addShard: st.configRS.getURL(), name: kCatalogShardId}), + "Cannot add a shard with catalogShard as its name if the catalog shard feature flag is not enabled"); + +st.stop(); +})(); |