summaryrefslogtreecommitdiff
path: root/jstests/multiVersion/libs
diff options
context:
space:
mode:
authorAlex Cameron <alex.cameron@10gen.com>2020-04-01 06:03:57 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-04-01 06:16:01 +0000
commitd2a8b439fad6e6e926645c484b058b695a41f0a0 (patch)
treedcdaa6e6e44bf1321cc866961dc7a06a6adf4a39 /jstests/multiVersion/libs
parent49836a791fbab2c8f3726450cda1d3c708eff90a (diff)
downloadmongo-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.js21
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);
};