summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAli Mir <ali.mir@mongodb.com>2020-07-08 19:48:17 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-07-16 16:32:43 +0000
commitee7c632b25d56f2d7c47edeeb3a81ef206f61924 (patch)
treed0d4e6ffd33d47c74f66e542a01f24663f3f4212
parentef0696ac5756af6817ea22904fad1e78f31e73fe (diff)
downloadmongo-ee7c632b25d56f2d7c47edeeb3a81ef206f61924.tar.gz
SERVER-48733 Update expectedPrimaryNodeId parameter in awaitNodesAgreeOnPrimary
-rw-r--r--jstests/replsets/chaining_removal.js2
-rw-r--r--jstests/replsets/reconfig_avoids_diverging_configs.js2
-rw-r--r--jstests/replsets/replSetGetStatus_new_term_oplog_entry_fields.js2
-rw-r--r--jstests/replsets/replsetprio1.js4
-rw-r--r--src/mongo/shell/replsettest.js19
5 files changed, 17 insertions, 12 deletions
diff --git a/jstests/replsets/chaining_removal.js b/jstests/replsets/chaining_removal.js
index 11ab2e9e43d..a3cafe46932 100644
--- a/jstests/replsets/chaining_removal.js
+++ b/jstests/replsets/chaining_removal.js
@@ -21,7 +21,7 @@ replTest.initiate({
{_id: 4, host: nodes[4].host, priority: 0},
],
});
-replTest.awaitNodesAgreeOnPrimary(replTest.kDefaultTimeoutMS, nodes, 0);
+replTest.awaitNodesAgreeOnPrimary(replTest.kDefaultTimeoutMS, nodes, nodes[0]);
var primary = replTest.getPrimary();
replTest.awaitReplication();
diff --git a/jstests/replsets/reconfig_avoids_diverging_configs.js b/jstests/replsets/reconfig_avoids_diverging_configs.js
index c4cb9aa31a7..34d7d5a2345 100644
--- a/jstests/replsets/reconfig_avoids_diverging_configs.js
+++ b/jstests/replsets/reconfig_avoids_diverging_configs.js
@@ -58,7 +58,7 @@ const parallelShell = startParallelShell(
}, C1), node0.port);
assert.commandWorked(node1.adminCommand({replSetStepUp: 1}));
-rst.awaitNodesAgreeOnPrimary(rst.kDefaultTimeoutMS, [node1, node2, node3], 1);
+rst.awaitNodesAgreeOnPrimary(rst.kDefaultTimeoutMS, [node1, node2, node3], node1);
jsTestLog("Current replica set topology: [node0 (Primary)] [node1 (Primary), node2, node3]");
assert.soon(() => node1.getDB('admin').runCommand({ismaster: 1}).ismaster);
assert.soon(() => isConfigCommitted(node1));
diff --git a/jstests/replsets/replSetGetStatus_new_term_oplog_entry_fields.js b/jstests/replsets/replSetGetStatus_new_term_oplog_entry_fields.js
index ec286d323bb..fbe09eeeec2 100644
--- a/jstests/replsets/replSetGetStatus_new_term_oplog_entry_fields.js
+++ b/jstests/replsets/replSetGetStatus_new_term_oplog_entry_fields.js
@@ -21,7 +21,7 @@ stopServerReplication(rst.nodes);
const newPrimary = rst.getSecondary();
assert.soonNoExcept(function() {
assert.commandWorked(newPrimary.adminCommand({replSetStepUp: 1}));
- rst.awaitNodesAgreeOnPrimary(rst.kDefaultTimeoutMS, rst.nodes, rst.getNodeId(newPrimary));
+ rst.awaitNodesAgreeOnPrimary(rst.kDefaultTimeoutMS, rst.nodes, newPrimary);
return newPrimary.adminCommand('replSetGetStatus').myState === ReplSetTest.State.PRIMARY;
}, 'failed to step up node ' + newPrimary.host, rst.kDefaultTimeoutMS);
diff --git a/jstests/replsets/replsetprio1.js b/jstests/replsets/replsetprio1.js
index 9851e501f69..0113b47b7a3 100644
--- a/jstests/replsets/replsetprio1.js
+++ b/jstests/replsets/replsetprio1.js
@@ -16,7 +16,7 @@ replTest.initiateWithAnyNodeAsPrimary({
});
// 2 should be master (give this a while to happen, as other nodes might first be elected)
-replTest.awaitNodesAgreeOnPrimary(replTest.kDefaultTimeoutMS, nodes, 2);
+replTest.awaitNodesAgreeOnPrimary(replTest.kDefaultTimeoutMS, nodes, nodes[2]);
// wait for 1 to not appear to be master (we are about to make it master and need a clean slate
// here)
@@ -43,7 +43,7 @@ for (i = 0; i < 1000; i++) {
// bring 2 back up, 2 should wait until caught up and then become master
replTest.restart(2);
-replTest.awaitNodesAgreeOnPrimary(replTest.kDefaultTimeoutMS, nodes, 2);
+replTest.awaitNodesAgreeOnPrimary(replTest.kDefaultTimeoutMS, nodes, nodes[2]);
// make sure nothing was rolled back
master = replTest.getPrimary();
diff --git a/src/mongo/shell/replsettest.js b/src/mongo/shell/replsettest.js
index d9f2aa0b650..8dc2b86abb2 100644
--- a/src/mongo/shell/replsettest.js
+++ b/src/mongo/shell/replsettest.js
@@ -931,23 +931,25 @@ var ReplSetTest = function(opts) {
/**
* Blocks until all nodes agree on who the primary is.
- * If 'expectedPrimaryNodeId' is provided, ensure that every node is seeing this node as the
+ * If 'expectedPrimaryNode' is provided, ensure that every node is seeing this node as the
* primary. Otherwise, ensure that all the nodes in the set agree with the first node on the
* identity of the primary.
*/
- this.awaitNodesAgreeOnPrimary = function(timeout, nodes, expectedPrimaryNodeId) {
+ this.awaitNodesAgreeOnPrimary = function(timeout, nodes, expectedPrimaryNode) {
timeout = timeout || self.kDefaultTimeoutMS;
nodes = nodes || self.nodes;
- expectedPrimaryNodeId = expectedPrimaryNodeId || -1;
- if (expectedPrimaryNodeId === -1) {
+ // indexOf will return the index of the expected node. If expectedPrimaryNode is undefined,
+ // indexOf will return -1.
+ const expectedPrimaryNodeIdx = self.nodes.indexOf(expectedPrimaryNode);
+ if (expectedPrimaryNodeIdx === -1) {
print("AwaitNodesAgreeOnPrimary: Waiting for nodes to agree on any primary.");
} else {
print("AwaitNodesAgreeOnPrimary: Waiting for nodes to agree on " +
- nodes[expectedPrimaryNodeId].name + " as primary.");
+ expectedPrimaryNode.name + " as primary.");
}
assert.soonNoExcept(function() {
- var primary = expectedPrimaryNodeId;
+ var primary = expectedPrimaryNodeIdx;
for (var i = 0; i < nodes.length; i++) {
var replSetGetStatus =
@@ -974,7 +976,10 @@ var ReplSetTest = function(opts) {
}
if (primary < 0) {
- // If we haven't seen a primary yet, set it to this.
+ print("AwaitNodesAgreeOnPrimary: " + nodes[i].name + " thinks the " +
+ " primary is " + self.nodes[nodesPrimary].name +
+ ". Other nodes are expected to agree on the same primary.");
+ // If the nodes haven't seen a primary yet, set primary to nodes[i]'s primary.
primary = nodesPrimary;
} else if (primary !== nodesPrimary) {
print("AwaitNodesAgreeOnPrimary: Retrying because " + nodes[i].name +