diff options
author | Sviatlana Zuiko <sviatlana.zuiko@mongodb.com> | 2022-08-22 16:05:27 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-08-22 16:37:30 +0000 |
commit | 85abdf5bfe7ed2f827db66627614a3fb6c7adc64 (patch) | |
tree | 44e78c7578711ae6e0804408961d435d1b567825 | |
parent | b324e20468ca7d2c3afd3cfa57f1ba38c77a3655 (diff) | |
download | mongo-85abdf5bfe7ed2f827db66627614a3fb6c7adc64.tar.gz |
Revert "SERVER-67443 added logging for fcv up/downgrade in set_feature_compatibility_version_command.cpp && created set_fcv_logging.js"
This reverts commit bcebd12f2e6492eef7f609d8b234f81e92c2f683.
-rw-r--r-- | jstests/sharding/set_fcv_logging.js | 208 | ||||
-rw-r--r-- | src/mongo/db/commands/set_feature_compatibility_version_command.cpp | 31 |
2 files changed, 1 insertions, 238 deletions
diff --git a/jstests/sharding/set_fcv_logging.js b/jstests/sharding/set_fcv_logging.js deleted file mode 100644 index 4d5b9c160ac..00000000000 --- a/jstests/sharding/set_fcv_logging.js +++ /dev/null @@ -1,208 +0,0 @@ -/** - * Tests for logging during FCV upgrade/downgrade. - * Three logs are involved: - * FCV upgrade or downgrade called (6744300) - * FCV is upgrading or downgrading (6744301) - * FCV upgrade or downgrade success (6744302). - * - * @tags: [multiversion_incompatible] - */ - -(function() { -"use strict"; - -load("jstests/libs/fail_point_util.js"); - -const latest = "latest"; -const SetFCVStatus = Object.freeze({called: 1, transitioning: 2, successful: 3}); - -/** - * Helper function to assert logging information including FCV status and server type. - */ -function assertLogs(status, upgradeOrDowngrade, serverType, numShardServers) { - if (status >= SetFCVStatus.called) { - assert.soon(() => rawMongoProgramOutput().match(/\"id\":6744300/), - '"FCV ' + upgradeOrDowngrade + ' called" log not found'); - } else { - assert(rawMongoProgramOutput().match(/\"id\":6744300/) == null, - 'should not log but "FCV ' + upgradeOrDowngrade + ' called" log found'); - } - if (status >= SetFCVStatus.transitioning) { - assert.soon(() => rawMongoProgramOutput().match(/\"id\":6744301/), - '"FCV ' + upgradeOrDowngrade + ' in progress" log not found'); - } else { - assert(rawMongoProgramOutput().match(/\"id\":6744301/) == null, - 'should not log but "FCV ' + upgradeOrDowngrade + ' in progress" log found'); - } - if (status >= SetFCVStatus.successful) { - assert.soon(() => rawMongoProgramOutput().match(/\"id\":6744302/), - '"FCV ' + upgradeOrDowngrade + ' success" log not found'); - } else { - assert(rawMongoProgramOutput().match(/\"id\":6744302/) == null, - 'should not log but "FCV ' + upgradeOrDowngrade + ' success" log found'); - } - - if (serverType === "replica set/standalone") { - assert.soon( - () => - rawMongoProgramOutput().match(/\"serverType\":"replica set\/standalone"/g).length == - status, - "should have " + status + " log(s) with serverType: replica set/standalone"); - } else if (serverType === "shardedCluster") { - assert.soon( - () => rawMongoProgramOutput().match(/\"serverType\":"config server"/g).length == status, - "should have " + status + " log(s) with serverType: config server"); - // If the FCV change failed before the config server reached the transitioning state, - // there should not be any logs containing 'shard server'. - if (status >= SetFCVStatus.transitioning) { - assert.soon( - () => rawMongoProgramOutput().match(/\"serverType\":"shard server"/g).length == - numShardServers * status, - "should have " + numShardServers * status + - " log(s) with serverType: shard server"); - } else { - assert(rawMongoProgramOutput().match(/\"serverType\":"shard server"/g) == null, - 'should not have log containing shard server'); - } - } - clearRawMongoProgramOutput(); // Clears output for next logging. -} - -/** - * Test the correct logs are logged using failpoints: - * - * failBeforeTransitioning - set after FCV change is called and before setTargetVersion is set to - * true, therefore should only log 6744300 (called). - * - * failDowngrading/failUpgrading - set after setTargetVersion is true, inside the - * _runDowngrade/_runUpgrade function, therefore should only log 6744300 (called), - * 6744301 (transitioning). - * - * Each server type is tested with upgrade and downgrade with the two mentioned failpoints on/off. - */ -function assertLogsWithFailpoints(conn, adminDB, serverType, numShardServers) { - clearRawMongoProgramOutput(); // Clears output for next logging. - - /* 1. Testing logging for downgrade */ - - // 1.1. Test that setFCV (downgrade) fails before moving to the transitional FCV: - // should have log 6744300 (called), but not 6744301 (transitioning) or 6744302 (successful). - jsTest.log("Case 1.1. Logs should show that downgrade has only reached 'called' stage."); - assert.commandWorked( - conn.adminCommand({configureFailPoint: 'failBeforeTransitioning', mode: "alwaysOn"})); - assert.commandFailed(adminDB.runCommand({setFeatureCompatibilityVersion: lastLTSFCV})); - assertLogs(SetFCVStatus.called, "downgrade", serverType, numShardServers); - assert.commandWorked( - conn.adminCommand({configureFailPoint: 'failBeforeTransitioning', mode: "off"})); - - // 1.2. Test that setFCV (downgrade) fails before finishing downgrading: - // should have log 6744300 (called), 6744301 (transitioning), but not 6744302 (successful). - jsTest.log("Case 1.2. Logs should show that downgrade has only reached 'downgrading' stage."); - assert.commandWorked( - conn.adminCommand({configureFailPoint: 'failDowngrading', mode: "alwaysOn"})); - assert.commandFailed(adminDB.runCommand({setFeatureCompatibilityVersion: lastLTSFCV})); - assertLogs(SetFCVStatus.transitioning, "downgrade", serverType, numShardServers); - assert.commandWorked(conn.adminCommand({configureFailPoint: 'failDowngrading', mode: "off"})); - - // 1.3. Test that setFCV (downgrade) succeeds: - // should have all three logs 6744300 (called), 6744301 (transitioning), 6744302 (successful). - jsTest.log("Case 1.3. Logs should show that downgrade has reached 'downgraded' stage."); - assert.commandWorked(adminDB.runCommand({setFeatureCompatibilityVersion: lastLTSFCV})); - assertLogs(SetFCVStatus.successful, "downgrade", serverType, numShardServers); - - /* 2. Testing logging for upgrade */ - - // 2.1. Test that setFCV (upgrade) fails before moving to the transitional FCV: - // should have log 6744300 (called), but not 6744301 (transitioning) or 6744302 (successful). - jsTest.log("Case 2.1. Logs should show that upgrade has only reached 'called' stage."); - assert.commandWorked( - conn.adminCommand({configureFailPoint: 'failBeforeTransitioning', mode: "alwaysOn"})); - assert.commandFailed(adminDB.runCommand({setFeatureCompatibilityVersion: latestFCV})); - assertLogs(SetFCVStatus.called, "upgrade", serverType, numShardServers); - assert.commandWorked( - conn.adminCommand({configureFailPoint: 'failBeforeTransitioning', mode: "off"})); - - // 2.2. Test that setFCV (upgrade) fails before finishing upgrading: - // should have log 6744300 (called), 6744301 (transitioning), but not 6744302 (successful). - jsTest.log("Case 2.2. Logs should show that upgrade has only reached 'upgrading' stage."); - assert.commandWorked( - conn.adminCommand({configureFailPoint: 'failUpgrading', mode: "alwaysOn"})); - assert.commandFailed(adminDB.runCommand({setFeatureCompatibilityVersion: latestFCV})); - assertLogs(SetFCVStatus.transitioning, "upgrade", serverType, numShardServers); - assert.commandWorked(conn.adminCommand({configureFailPoint: 'failUpgrading', mode: "off"})); - - // 2.3. Test that setFCV (upgrade) succeeds: - // should have all three logs 6744300 (called), 6744301 (transitioning), 6744302 (successful). - jsTest.log("Case 2.3. Logs should show that upgrade has reached 'upgraded' stage."); - assert.commandWorked(adminDB.runCommand({setFeatureCompatibilityVersion: latestFCV})); - assertLogs(SetFCVStatus.successful, "upgrade", serverType, numShardServers); - - // 2.4. Shouldn't log anything because we have already upgraded to latestFCV. - jsTest.log( - "Case 2.4. Logs should not contain fcv upgrade because it is already in upgraded state."); - assert.commandWorked(adminDB.runCommand({setFeatureCompatibilityVersion: latestFCV})); - // Ensure none of the logs have been output. - assertLogs( - 0 /* status: no fcv change */, "upgrade", 0 /* serverType */, 0 /* numShardServers */); -} - -function runStandaloneTest() { - // A 'latest' binary standalone should default to 'latestFCV'. - const conn = MongoRunner.runMongod({binVersion: latest}); - assert.neq( - null, conn, "mongod was unable to start up with version=" + latest + " and no data files"); - const adminDB = conn.getDB("admin"); - checkFCV(adminDB, latestFCV); - - jsTest.log("Checking for correct FCV logging on a standalone."); - assertLogsWithFailpoints(conn, adminDB, "replica set/standalone", 0 /*numShardServers*/); - - MongoRunner.stopMongod(conn); -} - -function runReplicaSetTest() { - const rst = new ReplSetTest({nodes: 2, nodeOpts: {binVersion: latest}}); - rst.startSet(); - rst.initiate(); - const primary = rst.getPrimary(); - const primaryAdminDB = primary.getDB("admin"); - checkFCV(primaryAdminDB, latestFCV); - - jsTest.log("Checking for correct FCV logging on a replica set."); - assertLogsWithFailpoints( - primary, primaryAdminDB, "replica set/standalone", 0 /*numShardServers*/); - - rst.stopSet(); -} - -function runShardingTest() { - const st = new ShardingTest({ - mongos: 1, - config: 1, - shards: 2, - other: { - mongosOptions: {binVersion: latest}, - configOptions: {binVersion: latest}, - rsOptions: { - binVersion: latest, - }, - rs: {nodes: 2} - } - }); - const mongosAdminDB = st.s.getDB("admin"); - const configPrimaryAdminDB = st.configRS.getPrimary().getDB("admin"); - const shardPrimaryAdminDB = st.rs0.getPrimary().getDB("admin"); - checkFCV(configPrimaryAdminDB, latestFCV); - checkFCV(shardPrimaryAdminDB, latestFCV); - - jsTest.log("Checking for correct FCV logging on a sharded cluster."); - assertLogsWithFailpoints( - st.configRS.getPrimary(), mongosAdminDB, "shardedCluster", 2 /*numShardServers*/); - - st.stop(); -} - -runStandaloneTest(); -runReplicaSetTest(); -runShardingTest(); -})(); 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 d548b8b446d..6ce53c6258b 100644 --- a/src/mongo/db/commands/set_feature_compatibility_version_command.cpp +++ b/src/mongo/db/commands/set_feature_compatibility_version_command.cpp @@ -317,20 +317,6 @@ public: return true; } - const auto upgradeOrDowngrade = requestedVersion > actualVersion ? "upgrade" : "downgrade"; - const auto server_type = serverGlobalParams.clusterRole == ClusterRole::ConfigServer - ? "config server" - : (request.getPhase() ? "shard server" : "replica set/standalone"); - - if (!request.getPhase() || request.getPhase() == SetFCVPhaseEnum::kStart) { - LOGV2(6744300, - "setFeatureCompatibilityVersion command called", - "upgradeOrDowngrade"_attr = upgradeOrDowngrade, - "serverType"_attr = server_type, - "fromVersion"_attr = actualVersion, - "toVersion"_attr = requestedVersion); - } - const boost::optional<Timestamp> changeTimestamp = getChangeTimestamp(opCtx, request); FeatureCompatibilityVersion::validateSetFeatureCompatibilityVersionRequest( @@ -350,8 +336,7 @@ public: FeatureCompatibilityVersion::enterFCVChangeRegion(opCtx)); uassert(ErrorCodes::Error(6744303), - "Failing setFeatureCompatibilityVersion before reaching the FCV " - "transitional stage due to 'failBeforeTransitioning' failpoint set", + "Failing upgrade due to 'failBeforeTransitioning' failpoint set", !failBeforeTransitioning.shouldFail()); FeatureCompatibilityVersion::updateFeatureCompatibilityVersionDocument( @@ -361,13 +346,6 @@ public: isFromConfigServer, changeTimestamp, true /* setTargetVersion */); - - LOGV2(6744301, - "setFeatureCompatibilityVersion has set the FCV to the transitional state", - "upgradeOrDowngrade"_attr = upgradeOrDowngrade, - "serverType"_attr = server_type, - "fromVersion"_attr = actualVersion, - "toVersion"_attr = requestedVersion); } if (request.getPhase() == SetFCVPhaseEnum::kStart) { @@ -436,13 +414,6 @@ public: false /* setTargetVersion */); } - LOGV2(6744302, - "setFeatureCompatibilityVersion succeeded", - "upgradeOrDowngrade"_attr = upgradeOrDowngrade, - "serverType"_attr = server_type, - "fromVersion"_attr = actualVersion, - "toVersion"_attr = requestedVersion); - return true; } |