summaryrefslogtreecommitdiff
path: root/jstests/replsets/rslib.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/replsets/rslib.js')
-rw-r--r--jstests/replsets/rslib.js12
1 files changed, 11 insertions, 1 deletions
diff --git a/jstests/replsets/rslib.js b/jstests/replsets/rslib.js
index 3ca7e66d85b..b97f79c00d1 100644
--- a/jstests/replsets/rslib.js
+++ b/jstests/replsets/rslib.js
@@ -22,14 +22,24 @@ var startSetIfSupportsReadMajority;
*/
syncFrom = function(syncingNode, desiredSyncSource, rst) {
jsTestLog("Forcing " + syncingNode.name + " to sync from " + desiredSyncSource.name);
- stopServerReplication(syncingNode);
+
+ // Ensure that 'desiredSyncSource' doesn't already have the dummy write sitting around from
+ // a previous syncFrom attempt.
var dummyName = "dummyForSyncFrom";
+ rst.getPrimary().getDB(dummyName).getCollection(dummyName).drop();
+ assert.soonNoExcept(function() {
+ return desiredSyncSource.getDB(dummyName).getCollection(dummyName).findOne() == null;
+ });
+
+ stopServerReplication(syncingNode);
+
assert.writeOK(rst.getPrimary().getDB(dummyName).getCollection(dummyName).insert({a: 1}));
// Wait for 'desiredSyncSource' to get the dummy write we just did so we know it's
// definitely ahead of 'syncingNode' before we call replSetSyncFrom.
assert.soonNoExcept(function() {
return desiredSyncSource.getDB(dummyName).getCollection(dummyName).findOne({a: 1});
});
+
assert.commandWorked(syncingNode.adminCommand({replSetSyncFrom: desiredSyncSource.name}));
restartServerReplication(syncingNode);
rst.awaitSyncSource(syncingNode, desiredSyncSource);