summaryrefslogtreecommitdiff
path: root/jstests/replsets/rollback.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/replsets/rollback.js')
-rw-r--r--jstests/replsets/rollback.js22
1 files changed, 20 insertions, 2 deletions
diff --git a/jstests/replsets/rollback.js b/jstests/replsets/rollback.js
index d53566d24a8..41fc6b6cdef 100644
--- a/jstests/replsets/rollback.js
+++ b/jstests/replsets/rollback.js
@@ -108,6 +108,7 @@ doTest = function (signal) {
wait(function () { return b.bar.count() == 3; });
A.runCommand({ replSetTest: 1, blind: true });
+ reconnect(a,b);
wait(function () { return B.isMaster().ismaster; });
b.bar.insert({ q: 4 });
@@ -118,12 +119,14 @@ doTest = function (signal) {
// a should not have the new data as it was in blind state.
B.runCommand({ replSetTest: 1, blind: true });
print("*************** wait for server to reconnect ****************");
- wait(function() { try { a.bar.findOne(); return true; } catch(e) { print(e); return false; } });
+ reconnect(a,b);
A.runCommand({ replSetTest: 1, blind: false });
+ reconnect(a,b);
print("*************** B ****************");
wait(function () { try { return !B.isMaster().ismaster; } catch(e) { return false; } });
print("*************** A ****************");
+ reconnect(a,b);
wait(function () {
try {
return A.isMaster().ismaster;
@@ -150,6 +153,7 @@ doTest = function (signal) {
// bring B back online
B.runCommand({ replSetTest: 1, blind: false });
+ reconnect(a,b);
wait(function () { return B.isMaster().ismaster || B.isMaster().secondary; });
@@ -161,7 +165,21 @@ doTest = function (signal) {
pause("rollback.js SUCCESS");
replTest.stopSet(signal);
-}
+};
+
+
+var reconnect = function(a,b) {
+ wait(function() {
+ try {
+ a.bar.stats();
+ b.bar.stats();
+ return true;
+ } catch(e) {
+ print(e);
+ return false;
+ }
+ });
+};
print("rollback.js");
doTest( 15 );