diff options
-rw-r--r-- | jstests/multiVersion/delay_secs_field_changes_on_upgrade_downgrade.js | 28 |
1 files changed, 21 insertions, 7 deletions
diff --git a/jstests/multiVersion/delay_secs_field_changes_on_upgrade_downgrade.js b/jstests/multiVersion/delay_secs_field_changes_on_upgrade_downgrade.js index d44c2013ca9..daf51e42ccb 100644 --- a/jstests/multiVersion/delay_secs_field_changes_on_upgrade_downgrade.js +++ b/jstests/multiVersion/delay_secs_field_changes_on_upgrade_downgrade.js @@ -37,18 +37,32 @@ function runTest(downgradeFCV) { assert.commandWorked(primary.adminCommand({setFeatureCompatibilityVersion: downgradeFCV})); config = primary.adminCommand({replSetGetConfig: 1}).config; - assert.eq(config.members[1].slaveDelay, 10, tojson(config)); - assert.eq(config.members[1].hasOwnProperty('secondaryDelaySecs'), false, tojson(config)); + + // 'slaveDelay' is disallowed starting in FCV 4.9, so only check for it if + // downgradeFCV < 4.9. Otherwise, check that the config is still using 'secondaryDelaySecs'. + if (MongoRunner.compareBinVersions(downgradeFCV, "4.9") >= 0) { + assert.eq(config.members[1].secondaryDelaySecs, 10, tojson(config)); + assert.eq(config.members[1].hasOwnProperty('slaveDelay'), false, tojson(config)); + } else { + assert.eq(config.members[1].slaveDelay, 10, tojson(config)); + assert.eq(config.members[1].hasOwnProperty('secondaryDelaySecs'), false, tojson(config)); + } config.version++; - // Test that a reconfig with 'slaveDelay' works. + // The following reconfig will use 'slaveDelay' if FCV < 4.9 and 'secondaryDelaySecs' if + // FCV >= 4.9. Both should succeed. assert.commandWorked(primary.adminCommand({replSetReconfig: config})); - delete config.members[1].slaveDelay; - config.members[1].secondaryDelaySecs = 10; + if (MongoRunner.compareBinVersions(downgradeFCV, "4.9") >= 0) { + delete config.members[1].secondaryDelaySecs; + config.members[1].slaveDelay = 10; + } else { + delete config.members[1].slaveDelay; + config.members[1].secondaryDelaySecs = 10; + } config.version++; - // Test that a reconfig with 'secondaryDelaySecs' fails. + // Test that a reconfig with an incompatible field name fails. assert.commandFailedWithCode(primary.adminCommand({replSetReconfig: config}), ErrorCodes.NewReplicaSetConfigurationIncompatible); @@ -76,4 +90,4 @@ function runTest(downgradeFCV) { } runFeatureFlagMultiversionTest('featureFlagUseSecondaryDelaySecs', runTest); -}());
\ No newline at end of file +}()); |