Files
mongo/jstests/multiVersion/upgrade_replset_creates_initialsyncid.js
2020-05-12 20:05:36 +00:00

54 lines
1.4 KiB
JavaScript

/**
* Tests that upgrading a replset adds the 'local.replset.initialSyncId' document.
*/
(function() {
"use strict";
load('jstests/multiVersion/libs/multi_rs.js');
load("jstests/replsets/rslib.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();
})();