diff options
author | Matthew Russotto <matthew.russotto@10gen.com> | 2020-03-27 10:50:55 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-03-27 19:50:49 +0000 |
commit | 9e27006ec7bb48ac70c33811bbd91cbf71a32e48 (patch) | |
tree | 1f74abf9b91f88074b17b2b5615f5a2aa88f50ff /jstests/multiVersion | |
parent | d853229b9b7153429f46ef075c7092218c540c11 (diff) | |
download | mongo-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.js | 52 |
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(); +})(); |