Files
mongo/jstests/replsets/two_initsync.js

101 lines
2.2 KiB
JavaScript
Raw Normal View History

2010-08-29 16:03:17 -04:00
// test initial sync failing
// try running as :
//
2010-08-29 16:03:17 -04:00
// mongo --nodb two_initsync.js | tee out | grep -v ^m31
//
var debugging = 0;
2010-08-29 16:03:17 -04:00
function pause(s) {
print(s);
while (debugging) {
sleep(3000);
print(s);
}
}
function deb(obj) {
if (debugging) {
2010-08-29 16:03:17 -04:00
print("\n\n\n" + obj + "\n\n");
}
2010-08-29 16:03:17 -04:00
}
w = 0;
function wait(f) {
w++;
var n = 0;
while (!f()) {
if (n % 4 == 0)
2010-08-29 16:03:17 -04:00
print("twoinitsync waiting " + w);
if (++n == 4) {
print("" + f);
}
2010-10-07 09:39:03 -04:00
assert(n < 200, 'tried 200 times, giving up');
2010-08-29 16:03:17 -04:00
sleep(1000);
}
2010-08-29 21:27:59 -04:00
}
doTest = function(signal) {
var replTest = new ReplSetTest({name: 'testSet', nodes: 0});
2010-08-29 21:27:59 -04:00
var first = replTest.add();
// Initiate replica set
assert.soon(function() {
var res = first.getDB("admin").runCommand({replSetInitiate: null});
2010-08-29 21:27:59 -04:00
return res['ok'] == 1;
});
// Get status
assert.soon(function() {
var result = first.getDB("admin").runCommand({replSetGetStatus: true});
2010-08-29 21:27:59 -04:00
return result['ok'] == 1;
});
var a = replTest.getPrimary().getDB("two");
2010-08-29 21:27:59 -04:00
for (var i = 0; i < 20000; i++)
2016-05-28 17:55:12 -04:00
a.coll.insert(
{i: i, s: "a b"});
2010-08-29 21:27:59 -04:00
// Start a second node
var second = replTest.add();
// Add the second node.
// This runs the equivalent of rs.add(newNode);
replTest.reInitiate(60000);
2010-08-29 21:27:59 -04:00
var b = second.getDB("admin");
// attempt to interfere with the initial sync
b._adminCommand({replSetTest: 1, forceInitialSyncFailure: 1});
2010-08-29 21:27:59 -04:00
// wait(function () { return a._adminCommand("replSetGetStatus").members.length == 2; });
wait(function() {
return b.isMaster().secondary || b.isMaster().ismaster;
});
2010-08-29 21:27:59 -04:00
print("b.isMaster:");
printjson(b.isMaster());
second.setSlaveOk();
print("b.isMaster:");
printjson(b.isMaster());
wait(function() {
var c = b.getSisterDB("two").coll.find().itcount();
print(c);
return c == 20000;
});
2010-08-29 21:27:59 -04:00
print("two_initsync.js SUCCESS");
replTest.stopSet(signal);
};
2010-08-29 16:03:17 -04:00
print("two_initsync.js");
doTest(15);