diff options
author | Alex Cameron <alex.cameron@10gen.com> | 2020-04-01 06:03:57 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-04-01 06:16:01 +0000 |
commit | d2a8b439fad6e6e926645c484b058b695a41f0a0 (patch) | |
tree | dcdaa6e6e44bf1321cc866961dc7a06a6adf4a39 /jstests/multiVersion/libs | |
parent | 49836a791fbab2c8f3726450cda1d3c708eff90a (diff) | |
download | mongo-d2a8b439fad6e6e926645c484b058b695a41f0a0.tar.gz |
SERVER-47126 Clean dbpath when downgrading arbiters in multiversion tests
Diffstat (limited to 'jstests/multiVersion/libs')
-rw-r--r-- | jstests/multiVersion/libs/multi_rs.js | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/jstests/multiVersion/libs/multi_rs.js b/jstests/multiVersion/libs/multi_rs.js index 1529353aca5..96c1df55982 100644 --- a/jstests/multiVersion/libs/multi_rs.js +++ b/jstests/multiVersion/libs/multi_rs.js @@ -3,6 +3,8 @@ // /** + * Upgrade or downgrade replica sets. + * * @param options {Object} see ReplSetTest.start & MongoRunner.runMongod. * @param user {string} optional, user name for authentication. * @param pwd {string} optional, password for authentication. Must be set if user is set. @@ -10,11 +12,11 @@ ReplSetTest.prototype.upgradeSet = function(options, user, pwd) { let primary = this.getPrimary(); - this.upgradeSecondaries(primary, options, user, pwd); - this.upgradeArbiters(primary, options, user, pwd); + this.upgradeSecondaries(primary, Object.assign({}, options), user, pwd); + this.upgradeArbiters(primary, Object.assign({}, options), user, pwd); // Upgrade the primary after stepping down. - this.upgradePrimary(primary, options, user, pwd); + this.upgradePrimary(primary, Object.assign({}, options), user, pwd); }; ReplSetTest.prototype.upgradeMembers = function(primary, members, options, user, pwd) { @@ -33,11 +35,22 @@ ReplSetTest.prototype.upgradeMembers = function(primary, members, options, user, } }; +ReplSetTest.prototype.getNonArbiterSecondaries = function() { + let secs = this.getSecondaries(); + let arbiters = this.getArbiters(); + let nonArbiters = secs.filter(x => !arbiters.includes(x)); + return nonArbiters; +}; + ReplSetTest.prototype.upgradeSecondaries = function(primary, options, user, pwd) { - this.upgradeMembers(primary, this.getSecondaries(), options, user, pwd); + this.upgradeMembers(primary, this.getNonArbiterSecondaries(), options, user, pwd); }; ReplSetTest.prototype.upgradeArbiters = function(primary, options, user, pwd) { + // We don't support downgrading data files for arbiters. We need to instead delete the dbpath. + if (options && options.binVersion == "last-stable") { + options["startClean"] = true; + } this.upgradeMembers(primary, this.getArbiters(), options, user, pwd); }; |