summaryrefslogtreecommitdiff
path: root/jstests/multiVersion
diff options
context:
space:
mode:
authorMatthew Russotto <matthew.russotto@10gen.com>2020-03-27 10:50:55 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-03-27 19:50:49 +0000
commit9e27006ec7bb48ac70c33811bbd91cbf71a32e48 (patch)
tree1f74abf9b91f88074b17b2b5615f5a2aa88f50ff /jstests/multiVersion
parentd853229b9b7153429f46ef075c7092218c540c11 (diff)
downloadmongo-9e27006ec7bb48ac70c33811bbd91cbf71a32e48.tar.gz
SERVER-46085 Fail initial sync attempt if sync source is in initial sync
(cherry picked from commit b70908c4898c4b02d8c70df3f796fa3e8cfe5bdd)
Diffstat (limited to 'jstests/multiVersion')
-rw-r--r--jstests/multiVersion/upgrade_replset_creates_initialsyncid.js52
1 files changed, 52 insertions, 0 deletions
diff --git a/jstests/multiVersion/upgrade_replset_creates_initialsyncid.js b/jstests/multiVersion/upgrade_replset_creates_initialsyncid.js
new file mode 100644
index 00000000000..b34e4ab4c13
--- /dev/null
+++ b/jstests/multiVersion/upgrade_replset_creates_initialsyncid.js
@@ -0,0 +1,52 @@
+/**
+ * Tests that upgrading a replset adds the 'local.replset.initialSyncId' document.
+ */
+
+(function() {
+"use strict";
+
+load('jstests/multiVersion/libs/multi_rs.js');
+
+const oldVersion = "last-stable";
+
+const nodes = {
+ n1: {binVersion: oldVersion},
+ n2: {binVersion: oldVersion},
+ n3: {binVersion: oldVersion, rsConfig: {priority: 0}},
+};
+
+const rst = new ReplSetTest({nodes: nodes});
+
+rst.startSet();
+rst.initiateWithHighElectionTimeout();
+
+const primary = rst.getPrimary();
+const secondary = rst.getSecondary();
+const localprimary = primary.getDB("local");
+const localsecondary = secondary.getDB("local");
+const collName = "replset.initialSyncId";
+
+assert.eq(0, localprimary[collName].find().itcount());
+assert.eq(0, localsecondary[collName].find().itcount());
+
+jsTest.log("Upgrading replica set...");
+
+rst.upgradeSet({binVersion: "latest"});
+
+jsTest.log("Replica set upgraded.");
+
+reconnect(primary);
+reconnect(secondary);
+
+const primarySyncIdData = localprimary[collName].find().toArray();
+assert.eq(1, primarySyncIdData.length);
+const primarySyncId = primarySyncIdData[0];
+const secondarySyncIdData = localsecondary[collName].find().toArray();
+assert.eq(1, secondarySyncIdData.length);
+const secondarySyncId = secondarySyncIdData[0];
+
+// We expect each node to pick a unique "_id".
+assert.neq(0, bsonWoCompare(primarySyncId["_id"], secondarySyncId["_id"]));
+
+rst.stopSet();
+})();