summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--jstests/multiVersion/libs/multi_rs.js14
-rw-r--r--jstests/multiVersion/zero_vote_arbiter_multiversion.js84
-rw-r--r--jstests/multiVersion/zero_vote_arbiter_upgrade_downgrade.js46
-rw-r--r--jstests/replsets/zero_vote_arbiter.js114
4 files changed, 0 insertions, 258 deletions
diff --git a/jstests/multiVersion/libs/multi_rs.js b/jstests/multiVersion/libs/multi_rs.js
index 1113d8a73a9..73f4ff07531 100644
--- a/jstests/multiVersion/libs/multi_rs.js
+++ b/jstests/multiVersion/libs/multi_rs.js
@@ -106,17 +106,3 @@ ReplSetTest.prototype.reconnect = function( node ){
return this.nodes[ nodeId ]
}
-
-ReplSetTest.prototype.conf = function () {
- var admin = this.getPrimary().getDB('admin');
-
- var resp = admin.runCommand({replSetGetConfig:1});
-
- if (resp.ok && !(resp.errmsg) && resp.config)
- return resp.config;
-
- else if (resp.errmsg && resp.errmsg.startsWith( "no such cmd" ))
- return admin.getSisterDB("local").system.replset.findOne();
-
- throw new Error("Could not retrieve replica set config: " + tojson(resp));
-}
diff --git a/jstests/multiVersion/zero_vote_arbiter_multiversion.js b/jstests/multiVersion/zero_vote_arbiter_multiversion.js
deleted file mode 100644
index 1a21e73d83b..00000000000
--- a/jstests/multiVersion/zero_vote_arbiter_multiversion.js
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Test that replSetInitiate and replSetReconfig prohibit zero-vote arbiters,
- * SERVER-13627.
- */
-
-load('./jstests/multiVersion/libs/multi_rs.js');
-
-var oldVersion = '2.6';
-var newVersion = 'latest';
-var NewReplicaSetConfigurationIncompatible = 103;
-var InvalidReplicaSetConfig = 93;
-
-/*
- * Start 3 nodes running 'rsVersion', try to add a 0-vote arbiter at
- * 'arbiterVersion' and return the replSetReconfig response.
- */
-function addZeroVoteArbiter(rsVersion, arbiterVersion) {
- var nodes = {
- n1: {binVersion: rsVersion},
- n2: {binVersion: rsVersion},
- n3: {binVersion: rsVersion}};
-
- var replTest = new ReplSetTest({nodes: nodes});
- var conns = replTest.startSet();
- replTest.initiate();
-
- var arbiterConn = replTest.add({binVersion: arbiterVersion});
- var admin = conns[0].getDB('admin');
- var conf = replTest.conf();
- jsTestLog('current config:');
- printjson(conf);
- conf.members.push({
- _id: 3,
- host: arbiterConn.host,
- arbiterOnly: true,
- votes: 0
- });
- conf.version++;
-
- jsTestLog('Add arbiter with zero votes:');
- var response = admin.runCommand({replSetReconfig: conf});
-
- if (response.ok) {
- // Old-version primary doesn't prohibit the reconfig, but the
- // new-version arbiter removes itself when it sees it has 0 votes.
- assert.soon(function () {
- try {
- var status = replTest.status();
- printjson(status);
- return (status.members.length == 4
- && status.members[3].state == replTest.DOWN
- && (/configuration is invalid/i).test(status.members[3].lastHeartbeatMessage));
- } catch (exc) {
- // Not ready.
- print(exc);
- return false;
- }
- });
-
- // Primary stays up.
- replTest.getPrimary();
- }
-
- replTest.stopSet();
- return response;
-}
-
-(function newRSPlusOldArbiter() {
- jsTestLog('New-version RS with 3 nodes, adding 0-vote arbiter is prohibited.');
-
- var response = addZeroVoteArbiter(newVersion, oldVersion);
- assert.commandFailed(response);
- assert.eq(response.code, NewReplicaSetConfigurationIncompatible);
- assert(/.*arbiter must vote.*/i.test(response.errmsg));
-})();
-
-(function oldRSPlusNewArbiter() {
- jsTestLog('Old-version RS with 3 nodes, adding 0-vote arbiter is allowed.');
-
- var response = addZeroVoteArbiter(oldVersion, newVersion);
-
- /* Old version doesn't prohibit the reconfig. */
- assert.commandWorked(response);
-})();
diff --git a/jstests/multiVersion/zero_vote_arbiter_upgrade_downgrade.js b/jstests/multiVersion/zero_vote_arbiter_upgrade_downgrade.js
deleted file mode 100644
index 14e03de3bba..00000000000
--- a/jstests/multiVersion/zero_vote_arbiter_upgrade_downgrade.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Test zero-vote arbiters during upgrade and downgrade between 2.6 and 2.8.
- * SERVER-13627.
- */
-
-load('./jstests/multiVersion/libs/multi_rs.js');
-
-var oldVersion = '2.6';
-var newVersion = 'latest';
-
-/*
- * Create a 2.6 replica set with a 0-vote arbiter and upgrade it to the latest
- * version. Check that we still have a quorum and can elect a primary. Downgrade
- * it, check again.
- */
-(function upgradeAndDowngradeRSWithAZeroVoteArbiter() {
- var nodes = {
- n1: {binVersion: oldVersion},
- n2: {binVersion: oldVersion},
- a3: {binVersion: oldVersion}};
-
- var replTest = new ReplSetTest({nodes: nodes});
- replTest.startSet();
- var conf = replTest.getReplSetConfig();
- conf.members[2].votes = 0;
- replTest.initiate(conf);
-
- jsTestLog('Upgrade to ' + newVersion);
- replTest.upgradeSet(newVersion);
-
- // Should be able to elect a primary.
- replTest.getPrimary();
-
- jsTestLog('Config after upgrade:');
- printjson(replTest.conf());
-
- jsTestLog('Downgrade to ' + oldVersion);
- replTest.upgradeSet(oldVersion);
-
- // Should be able to elect a primary.
- replTest.getPrimary();
- jsTestLog('Config after downgrade:');
- printjson(replTest.conf());
-
- replTest.stopSet();
-})();
diff --git a/jstests/replsets/zero_vote_arbiter.js b/jstests/replsets/zero_vote_arbiter.js
deleted file mode 100644
index d7dbe23e0dc..00000000000
--- a/jstests/replsets/zero_vote_arbiter.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Test that replSetInitiate and replSetReconfig prohibit zero-vote arbiters,
- * SERVER-13627.
- */
-
-var NewReplicaSetConfigurationIncompatible = 103;
-var InvalidReplicaSetConfig = 93;
-
-/*
- * Create replica set with 3 nodes, add new node as 0-vote arbiter.
- */
-(function addArbiterZeroVotes() {
- var replTest = new ReplSetTest({nodes: 3});
- var conns = replTest.startSet();
- replTest.initiate();
-
- var arbiterConn = replTest.add();
- var admin = conns[0].getDB("admin");
- var conf = admin.runCommand({replSetGetConfig: 1}).config;
- conf.members.push({
- _id: 3,
- host: arbiterConn.host,
- arbiterOnly: true,
- votes: 0
- });
- conf.version++;
-
- jsTestLog('Add arbiter with zero votes:');
- var response = admin.runCommand({replSetReconfig: conf});
- assert.commandFailed(response);
- assert.eq(response.code, NewReplicaSetConfigurationIncompatible);
- assert(/.*arbiter must vote.*/i.test(response.errmsg));
-
- replTest.stopSet();
-})();
-
-/*
- * Replica set with 4 nodes, 2 are arbiters. Reconfigure one with 0 votes.
- */
-(function reconfigArbiterZeroVotes() {
- var replTest = new ReplSetTest({nodes: 4});
- var conns = replTest.startSet();
- var config = replTest.getReplSetConfig();
- config.members[2].arbiterOnly = true;
- config.members[3].arbiterOnly = true;
- replTest.initiate(config);
-
- var admin = conns[0].getDB("admin");
- var conf = admin.runCommand({replSetGetConfig: 1}).config;
-
- jsTestLog('Reconfig arbiter with zero votes:');
- conf.members[3].votes = 0;
- conf.version++;
- var response = admin.runCommand({replSetReconfig: conf});
- printjson(response);
- assert.commandFailed(response);
- assert.eq(response.code, NewReplicaSetConfigurationIncompatible);
- assert(/.*arbiter must vote.*/i.test(response.errmsg));
-
- replTest.stopSet();
-})();
-
-
-/*
- * replSetInitiate with a 0-vote arbiter.
- */
-(function initiateArbiterZeroVotes() {
- var replTest = new ReplSetTest({nodes: 3});
- var conns = replTest.startSet();
- var config = replTest.getReplSetConfig();
- config.members[2].arbiterOnly = true;
- config.members[2].votes = 0;
-
- var admin = conns[0].getDB("admin");
-
- jsTestLog('replSetInitiate with 0-vote arbiter:');
- var response = admin.runCommand({replSetInitiate: config});
- printjson(response);
- assert.commandFailed(response);
-
- // Test for SERVER-15838 wrong error from RS init with 0-vote arbiter.
- assert.eq(response.code, InvalidReplicaSetConfig);
- assert(/.*arbiter must vote.*/i.test(response.errmsg));
-
- replTest.stopSet();
-})();
-
-/*
- * Replica set with max number of voting nodes. Add a 0-vote arbiter.
- */
-(function maxVoteEdgeAddArbiterZeroVotes() {
- var replTest = new ReplSetTest({nodes: 7});
- var conns = replTest.startSet();
- replTest.initiate();
-
- var arbiterConn = replTest.add();
- var admin = conns[0].getDB("admin");
- var conf = admin.runCommand({replSetGetConfig: 1}).config;
- conf.members.push({
- _id: 7,
- host: arbiterConn.host,
- arbiterOnly: true,
- votes: 0
- });
- conf.version++;
-
- jsTestLog('Add arbiter with zero votes:');
- var response = admin.runCommand({replSetReconfig: conf});
- assert.commandFailed(response);
- assert.eq(response.code, NewReplicaSetConfigurationIncompatible);
- assert(/.*arbiter must vote.*/i.test(response.errmsg));
-
- replTest.stopSet();
-})();