summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCheahuychou Mao <cheahuychou.mao@mongodb.com>2019-10-25 18:52:44 +0000
committerevergreen <evergreen@mongodb.com>2019-10-25 18:52:44 +0000
commit99d90208c67351469dae5983ed233638e61cf732 (patch)
tree97457551066481846a206a1396e415a593887430
parentb4c673a55d93c77297914b4c7407b141a985661a (diff)
downloadmongo-99d90208c67351469dae5983ed233638e61cf732.tar.gz
SERVER-39165 Add waitForFailpoint command and update initial sync tests
-rw-r--r--jstests/replsets/initial_sync_applier_error.js10
-rw-r--r--jstests/replsets/initial_sync_capped_index.js12
-rw-r--r--jstests/replsets/initial_sync_commit_prepared_transaction.js4
-rw-r--r--jstests/replsets/initial_sync_drop_collection.js7
-rw-r--r--jstests/replsets/initial_sync_during_stepdown.js7
-rw-r--r--jstests/replsets/initial_sync_fcv.js4
-rw-r--r--jstests/replsets/initial_sync_fetch_from_oldest_active_transaction_timestamp.js5
-rw-r--r--jstests/replsets/initial_sync_move_forward.js23
-rw-r--r--jstests/replsets/initial_sync_oplog_hole.js12
-rw-r--r--jstests/replsets/initial_sync_oplog_rollover.js12
-rw-r--r--jstests/replsets/initial_sync_read_concern_no_oplog.js12
-rw-r--r--jstests/replsets/initial_sync_rename_collection.js10
-rw-r--r--jstests/replsets/initial_sync_replSetGetStatus.js20
-rw-r--r--jstests/replsets/initial_sync_reset_oldest_timestamp_after_failed_attempt.js7
-rw-r--r--jstests/replsets/initial_sync_update_missing_doc_upsert.js10
-rw-r--r--jstests/replsets/initial_sync_uuid_not_found.js5
-rw-r--r--jstests/replsets/libs/initial_sync_test.js7
-rw-r--r--jstests/replsets/libs/initial_sync_update_missing_doc.js9
18 files changed, 76 insertions, 100 deletions
diff --git a/jstests/replsets/initial_sync_applier_error.js b/jstests/replsets/initial_sync_applier_error.js
index 51454c98ea9..637625b6fb9 100644
--- a/jstests/replsets/initial_sync_applier_error.js
+++ b/jstests/replsets/initial_sync_applier_error.js
@@ -12,6 +12,7 @@
(function() {
"use strict";
load("jstests/libs/check_log.js");
+load("jstests/libs/fail_point_util.js");
var name = 'initial_sync_applier_error';
var replSet = new ReplSetTest({
@@ -31,18 +32,15 @@ assert.commandWorked(coll.insert({_id: 0, content: "hi"}));
var secondary = replSet.add({setParameter: "numInitialSyncAttempts=2"});
secondary.setSlaveOk();
-assert.commandWorked(secondary.getDB('admin').runCommand(
- {configureFailPoint: 'initialSyncHangBeforeCopyingDatabases', mode: 'alwaysOn'}));
+let failPoint = configureFailPoint(secondary, 'initialSyncHangBeforeCopyingDatabases');
replSet.reInitiate();
// Wait for fail point message to be logged.
-checkLog.contains(secondary,
- 'initial sync - initialSyncHangBeforeCopyingDatabases fail point enabled');
+failPoint.wait();
var newCollName = name + '_2';
assert.commandWorked(coll.renameCollection(newCollName, true));
-assert.commandWorked(secondary.getDB('admin').runCommand(
- {configureFailPoint: 'initialSyncHangBeforeCopyingDatabases', mode: 'off'}));
+failPoint.off();
checkLog.contains(secondary, 'initial sync done');
diff --git a/jstests/replsets/initial_sync_capped_index.js b/jstests/replsets/initial_sync_capped_index.js
index 7319fcfdde8..8ce051d0e49 100644
--- a/jstests/replsets/initial_sync_capped_index.js
+++ b/jstests/replsets/initial_sync_capped_index.js
@@ -26,7 +26,7 @@
(function() {
"use strict";
-load("jstests/libs/check_log.js");
+load("jstests/libs/fail_point_util.js");
load("jstests/replsets/rslib.js"); // for waitForState
/**
@@ -84,17 +84,14 @@ var collectionClonerFailPoint = "initialSyncHangCollectionClonerAfterHandlingBat
// Make the collection cloner pause after its initial 'find' response on the capped collection.
var nss = dbName + "." + cappedCollName;
jsTestLog("Enabling collection cloner fail point for " + nss);
-assert.commandWorked(secondary.adminCommand(
- {configureFailPoint: collectionClonerFailPoint, mode: 'alwaysOn', data: {nss: nss}}));
+let failPoint = configureFailPoint(secondary, collectionClonerFailPoint, {nss: nss});
// Let the SECONDARY begin initial sync.
jsTestLog("Re-initiating replica set with new secondary.");
replTest.reInitiate();
jsTestLog("Waiting for the initial 'find' response of capped collection cloner to complete.");
-checkLog.contains(
- secondary,
- "initialSyncHangCollectionClonerAfterHandlingBatchResponse fail point enabled for " + nss);
+failPoint.wait();
// Append documents to the capped collection so that the SECONDARY will clone these
// additional documents.
@@ -105,8 +102,7 @@ for (var i = 0; i < docsToAppend; i++) {
// Let the 'getMore' requests for the capped collection clone continue.
jsTestLog("Disabling collection cloner fail point for " + nss);
-assert.commandWorked(secondary.adminCommand(
- {configureFailPoint: collectionClonerFailPoint, mode: 'off', data: {nss: nss}}));
+failPoint.off();
// Wait until initial sync completes.
replTest.awaitReplication();
diff --git a/jstests/replsets/initial_sync_commit_prepared_transaction.js b/jstests/replsets/initial_sync_commit_prepared_transaction.js
index 80198e82673..8be6d3bc074 100644
--- a/jstests/replsets/initial_sync_commit_prepared_transaction.js
+++ b/jstests/replsets/initial_sync_commit_prepared_transaction.js
@@ -9,7 +9,6 @@
(function() {
"use strict";
-load("jstests/libs/check_log.js");
load("jstests/core/txns/libs/prepare_helpers.js");
const replTest = new ReplSetTest({nodes: 2});
@@ -73,7 +72,8 @@ secondary = replTest.start(
true /* wait */);
// Wait for failpoint to be reached so we know that collection cloning is paused.
-checkLog.contains(secondary, "initialSyncHangDuringCollectionClone fail point enabled");
+assert.commandWorked(secondary.adminCommand(
+ {waitForFailPoint: "initialSyncHangDuringCollectionClone", timesEntered: 1}));
jsTestLog("Running operations while collection cloning is paused");
diff --git a/jstests/replsets/initial_sync_drop_collection.js b/jstests/replsets/initial_sync_drop_collection.js
index 72fa5b5d273..35fca8b6de1 100644
--- a/jstests/replsets/initial_sync_drop_collection.js
+++ b/jstests/replsets/initial_sync_drop_collection.js
@@ -44,10 +44,13 @@ function setupTest({failPoint, secondaryStartupParams}) {
// can check initialSyncStatus fields after initial sync is complete.
secondaryStartupParams['failpoint.skipClearInitialSyncState'] = tojson({mode: 'alwaysOn'});
secondaryStartupParams['numInitialSyncAttempts'] = 1;
- replTest.restart(secondary, {startClean: true, setParameter: secondaryStartupParams});
+ secondary =
+ replTest.restart(secondary, {startClean: true, setParameter: secondaryStartupParams});
+ secondaryDB = secondary.getDB(dbName);
+ secondaryColl = secondaryDB[collName];
jsTestLog("Waiting for secondary to reach failPoint " + failPoint);
- checkLog.contains(secondary, failPoint + " fail point enabled for " + nss);
+ assert.commandWorked(secondary.adminCommand({waitForFailPoint: failPoint, timesEntered: 1}));
// Restarting the secondary may have resulted in an election. Wait until the system
// stabilizes and reaches RS_STARTUP2 state.
diff --git a/jstests/replsets/initial_sync_during_stepdown.js b/jstests/replsets/initial_sync_during_stepdown.js
index fe5d1a79587..ecc76114d34 100644
--- a/jstests/replsets/initial_sync_during_stepdown.js
+++ b/jstests/replsets/initial_sync_during_stepdown.js
@@ -51,7 +51,9 @@ function setupTest({
// Skip clearing initial sync progress after a successful initial sync attempt so that we
// can check initialSyncStatus fields after initial sync is complete.
secondaryStartupParams['failpoint.skipClearInitialSyncState'] = tojson({mode: 'alwaysOn'});
- rst.start(secondary, {startClean: true, setParameter: secondaryStartupParams});
+ secondary = rst.start(secondary, {startClean: true, setParameter: secondaryStartupParams});
+ secondaryDB = secondary.getDB(dbName);
+ secondaryColl = secondaryDB[collName];
// Wait until secondary reaches RS_STARTUP2 state.
rst.waitForState(secondary, ReplSetTest.State.STARTUP_2);
@@ -141,7 +143,8 @@ setupTest({
});
jsTestLog("Waiting for collection cloning to complete.");
-checkLog.contains(secondary, "initialSyncHangAfterDataCloning fail point enabled");
+assert.commandWorked(
+ secondary.adminCommand({waitForFailPoint: "initialSyncHangAfterDataCloning", timesEntered: 1}));
// Insert more data so that these are replicated to secondary node via oplog fetcher.
jsTestLog("Inserting more data on primary.");
diff --git a/jstests/replsets/initial_sync_fcv.js b/jstests/replsets/initial_sync_fcv.js
index 01c2744949a..ab83e24d8fe 100644
--- a/jstests/replsets/initial_sync_fcv.js
+++ b/jstests/replsets/initial_sync_fcv.js
@@ -44,8 +44,8 @@ function runInitialSync(cmd, initialFCV) {
// Initial sync clones the 'admin' database first, which will set the fCV on the
// secondary to initialFCV. We then block the secondary before issuing 'listCollections' on
// the test database.
- checkLog.contains(secondary,
- 'initial sync - initialSyncHangBeforeListCollections fail point enabled');
+ assert.commandWorked(secondary.adminCommand(
+ {waitForFailPoint: "initialSyncHangBeforeListCollections", timesEntered: 1}));
// Initial sync is stopped right before 'listCollections' on the test database. We now run
// the test command to modify the fCV.
diff --git a/jstests/replsets/initial_sync_fetch_from_oldest_active_transaction_timestamp.js b/jstests/replsets/initial_sync_fetch_from_oldest_active_transaction_timestamp.js
index eea0ebfab20..d70f72889ee 100644
--- a/jstests/replsets/initial_sync_fetch_from_oldest_active_transaction_timestamp.js
+++ b/jstests/replsets/initial_sync_fetch_from_oldest_active_transaction_timestamp.js
@@ -16,7 +16,6 @@
(function() {
"use strict";
-load("jstests/libs/check_log.js");
load("jstests/core/txns/libs/prepare_helpers.js");
const replTest = new ReplSetTest({nodes: 2});
@@ -109,8 +108,8 @@ secondary = replTest.start(
jsTestLog("Secondary was restarted");
// Wait for failpoint to be reached so we know that collection cloning is paused.
-checkLog.contains(secondary, "initialSyncHangDuringCollectionClone fail point enabled");
-
+assert.commandWorked(secondary.adminCommand(
+ {waitForFailPoint: "initialSyncHangDuringCollectionClone", timesEntered: 1}));
jsTestLog("Running operations while collection cloning is paused");
// Run some operations on the sync source while collection cloning is paused so that we know
diff --git a/jstests/replsets/initial_sync_move_forward.js b/jstests/replsets/initial_sync_move_forward.js
index 534a2d8d72e..fc54b450400 100644
--- a/jstests/replsets/initial_sync_move_forward.js
+++ b/jstests/replsets/initial_sync_move_forward.js
@@ -14,6 +14,7 @@
(function() {
"use strict";
+load("jstests/libs/fail_point_util.js");
load("jstests/libs/get_index_helpers.js");
var rst = new ReplSetTest({name: "initial_sync_move_forward", nodes: 1});
@@ -43,22 +44,11 @@ secondary.setSlaveOk();
var secondaryColl = secondary.getDB("test").coll;
// Pause initial sync when the secondary has copied {_id: 0, x: 0} and {_id: 1, x: 1}.
-assert.commandWorked(secondary.adminCommand({
- configureFailPoint: "initialSyncHangDuringCollectionClone",
- data: {namespace: secondaryColl.getFullName(), numDocsToClone: 2},
- mode: "alwaysOn"
-}));
+var failPoint = configureFailPoint(secondary,
+ "initialSyncHangDuringCollectionClone",
+ {namespace: secondaryColl.getFullName(), numDocsToClone: 2});
rst.reInitiate();
-assert.soon(function() {
- var logMessages = assert.commandWorked(secondary.adminCommand({getLog: "global"})).log;
- for (var i = 0; i < logMessages.length; i++) {
- if (logMessages[i].indexOf(
- "initial sync - initialSyncHangDuringCollectionClone fail point enabled") != -1) {
- return true;
- }
- }
- return false;
-});
+failPoint.wait();
// Delete {_id: count - 2} to make a hole. Grow {_id: 0} so that it moves into that hole. This
// will cause the secondary to clone {_id: 0} again.
@@ -75,8 +65,7 @@ assert.commandWorked(masterColl.remove({_id: count - 1, x: count - 1}));
assert.commandWorked(masterColl.insert({_id: count, x: 1, longString: longString}));
// Resume initial sync.
-assert.commandWorked(secondary.adminCommand(
- {configureFailPoint: "initialSyncHangDuringCollectionClone", mode: "off"}));
+failPoint.off();
// Wait for initial sync to finish.
rst.awaitSecondaryNodes();
diff --git a/jstests/replsets/initial_sync_oplog_hole.js b/jstests/replsets/initial_sync_oplog_hole.js
index a5bd24b96b3..63635d471f9 100644
--- a/jstests/replsets/initial_sync_oplog_hole.js
+++ b/jstests/replsets/initial_sync_oplog_hole.js
@@ -7,6 +7,7 @@
"use strict";
load("jstests/libs/check_log.js");
+load("jstests/libs/fail_point_util.js");
load("jstests/replsets/rslib.js");
// Set up replica set. Disallow chaining so nodes always sync from primary.
@@ -40,19 +41,16 @@ assert.commandWorked(primaryColl.insert({_id: "a"}));
assert.eq(primaryColl.find({_id: "a"}).itcount(), 1);
jsTest.log("Create the uncommitted write.");
-assert.commandWorked(primaryDB.adminCommand({
- configureFailPoint: "hangAfterCollectionInserts",
- mode: "alwaysOn",
- data: {collectionNS: primaryColl.getFullName(), first_id: "b"}
-}));
+const failPoint = configureFailPoint(primaryDB,
+ "hangAfterCollectionInserts",
+ {collectionNS: primaryColl.getFullName(), first_id: "b"});
const db = primaryDB;
const joinHungWrite = startParallelShell(() => {
assert.commandWorked(
db.getSiblingDB(TestData.testName)[TestData.collectionName].insert({_id: "b"}));
}, primary.port);
-checkLog.contains(primaryDB.getMongo(),
- "hangAfterCollectionInserts fail point enabled for " + primaryColl.getFullName());
+failPoint.wait();
jsTest.log("Create a write following the uncommitted write.");
assert.commandWorked(primaryColl.insert({_id: "c"}));
diff --git a/jstests/replsets/initial_sync_oplog_rollover.js b/jstests/replsets/initial_sync_oplog_rollover.js
index 268548f1f80..d61f7250ee4 100644
--- a/jstests/replsets/initial_sync_oplog_rollover.js
+++ b/jstests/replsets/initial_sync_oplog_rollover.js
@@ -9,7 +9,8 @@
(function() {
"use strict";
-load("jstests/libs/check_log.js");
+
+load("jstests/libs/fail_point_util.js");
var name = 'initial_sync_oplog_rollover';
var replSet = new ReplSetTest({
@@ -42,12 +43,10 @@ var firstOplogEntry = getFirstOplogEntry(primary);
var secondary = replSet.add();
secondary.setSlaveOk();
-assert.commandWorked(secondary.getDB('admin').runCommand(
- {configureFailPoint: 'initialSyncHangBeforeCopyingDatabases', mode: 'alwaysOn'}));
+var failPoint = configureFailPoint(secondary, 'initialSyncHangBeforeCopyingDatabases');
replSet.reInitiate();
-checkLog.contains(secondary,
- 'initial sync - initialSyncHangBeforeCopyingDatabases fail point enabled');
+failPoint.wait();
// Keep inserting large documents until they roll over the oplog.
const largeStr = new Array(4 * 1024 * oplogSizeOnPrimary).join('aaaaaaaa');
@@ -57,8 +56,7 @@ while (bsonWoCompare(getFirstOplogEntry(primary), firstOplogEntry) === 0) {
sleep(100);
}
-assert.commandWorked(secondary.getDB('admin').runCommand(
- {configureFailPoint: 'initialSyncHangBeforeCopyingDatabases', mode: 'off'}));
+failPoint.off();
replSet.awaitSecondaryNodes(200 * 1000);
diff --git a/jstests/replsets/initial_sync_read_concern_no_oplog.js b/jstests/replsets/initial_sync_read_concern_no_oplog.js
index 6ad3974cea3..63c0c6739a3 100644
--- a/jstests/replsets/initial_sync_read_concern_no_oplog.js
+++ b/jstests/replsets/initial_sync_read_concern_no_oplog.js
@@ -2,7 +2,8 @@
// created its oplog, the node returns an error rather than crashing.
(function() {
'use strict';
-load('jstests/libs/check_log.js');
+
+load("jstests/libs/fail_point_util.js");
const replSet = new ReplSetTest({nodes: 1});
@@ -11,20 +12,17 @@ replSet.initiate();
const primary = replSet.getPrimary();
const secondary = replSet.add();
-assert.commandWorked(secondary.adminCommand(
- {configureFailPoint: 'initialSyncHangBeforeCreatingOplog', mode: 'alwaysOn'}));
+const failPoint = configureFailPoint(secondary, 'initialSyncHangBeforeCreatingOplog');
replSet.reInitiate();
-checkLog.contains(secondary,
- 'initial sync - initialSyncHangBeforeCreatingOplog fail point enabled');
+failPoint.wait();
assert.commandFailedWithCode(
secondary.getDB('local').runCommand(
{find: 'coll', limit: 1, readConcern: {afterClusterTime: Timestamp(1, 1)}}),
ErrorCodes.NotYetInitialized);
-assert.commandWorked(secondary.adminCommand(
- {configureFailPoint: 'initialSyncHangBeforeCreatingOplog', mode: 'off'}));
+failPoint.off();
replSet.awaitReplication();
replSet.awaitSecondaryNodes();
diff --git a/jstests/replsets/initial_sync_rename_collection.js b/jstests/replsets/initial_sync_rename_collection.js
index 957dae9db8a..a06ad6862b5 100644
--- a/jstests/replsets/initial_sync_rename_collection.js
+++ b/jstests/replsets/initial_sync_rename_collection.js
@@ -7,6 +7,7 @@
(function() {
'use strict';
+load("jstests/libs/fail_point_util.js");
load('jstests/replsets/rslib.js');
const basename = 'initial_sync_rename_collection';
@@ -43,8 +44,7 @@ const secondary = rst.add({setParameter: 'numInitialSyncAttempts=1'});
// Add a fail point that causes the secondary's initial sync to hang before
// copying databases.
-assert.commandWorked(secondary.adminCommand(
- {configureFailPoint: 'initialSyncHangBeforeCopyingDatabases', mode: 'alwaysOn'}));
+const failPoint = configureFailPoint(secondary, 'initialSyncHangBeforeCopyingDatabases');
jsTestLog('Begin initial sync on secondary');
let conf = rst.getPrimary().getDB('admin').runCommand({replSetGetConfig: 1}).config;
@@ -55,8 +55,7 @@ assert.eq(primary, rst.getPrimary(), 'Primary changed after reconfig');
// Confirm that initial sync started on the secondary node.
jsTestLog('Waiting for initial sync to start');
-checkLog.contains(secondary,
- 'initial sync - initialSyncHangBeforeCopyingDatabases fail point enabled');
+failPoint.wait();
// Start renaming collections while initial sync is hanging.
jsTestLog('Rename collection ' + db0_name + '.' + collRenameWithinDB_name + ' to ' + db0_name +
@@ -72,8 +71,7 @@ assert.commandWorked(primary.adminCommand({
}));
// Disable fail point so that the secondary can finish its initial sync.
-assert.commandWorked(secondary.adminCommand(
- {configureFailPoint: 'initialSyncHangBeforeCopyingDatabases', mode: 'off'}));
+failPoint.off();
jsTestLog('Wait for both nodes to be up-to-date');
rst.awaitSecondaryNodes();
diff --git a/jstests/replsets/initial_sync_replSetGetStatus.js b/jstests/replsets/initial_sync_replSetGetStatus.js
index 96397750f44..c4e1ddc0afb 100644
--- a/jstests/replsets/initial_sync_replSetGetStatus.js
+++ b/jstests/replsets/initial_sync_replSetGetStatus.js
@@ -5,7 +5,8 @@
(function() {
"use strict";
-load("jstests/libs/check_log.js");
+
+load("jstests/libs/fail_point_util.js");
var name = 'initial_sync_replSetGetStatus';
var replSet = new ReplSetTest({
@@ -25,15 +26,12 @@ assert.commandWorked(coll.insert({a: 2}));
var secondary = replSet.add();
secondary.setSlaveOk();
-assert.commandWorked(secondary.getDB('admin').runCommand(
- {configureFailPoint: 'initialSyncHangBeforeCopyingDatabases', mode: 'alwaysOn'}));
-assert.commandWorked(secondary.getDB('admin').runCommand(
- {configureFailPoint: 'initialSyncHangBeforeFinish', mode: 'alwaysOn'}));
+var failPointBeforeCopying = configureFailPoint(secondary, 'initialSyncHangBeforeCopyingDatabases');
+var failPointBeforeFinish = configureFailPoint(secondary, 'initialSyncHangBeforeFinish');
replSet.reInitiate();
// Wait for initial sync to pause before it copies the databases.
-checkLog.contains(secondary,
- 'initial sync - initialSyncHangBeforeCopyingDatabases fail point enabled');
+failPointBeforeCopying.wait();
// Test that replSetGetStatus returns the correct results while initial sync is in progress.
var res = assert.commandWorked(secondary.adminCommand({replSetGetStatus: 1}));
@@ -51,11 +49,10 @@ assert.commandWorked(coll.insert({a: 3}));
assert.commandWorked(coll.insert({a: 4}));
// Let initial sync continue working.
-assert.commandWorked(secondary.getDB('admin').runCommand(
- {configureFailPoint: 'initialSyncHangBeforeCopyingDatabases', mode: 'off'}));
+failPointBeforeCopying.off();
// Wait for initial sync to pause right before it finishes.
-checkLog.contains(secondary, 'initial sync - initialSyncHangBeforeFinish fail point enabled');
+failPointBeforeFinish.wait();
// Test that replSetGetStatus returns the correct results when initial sync is at the very end.
res = assert.commandWorked(secondary.adminCommand({replSetGetStatus: 1}));
@@ -73,8 +70,7 @@ assert.eq(res.initialSyncStatus.databases.test["test.foo"].indexes, 1);
assert.eq(res.initialSyncStatus.databases.test["test.foo"].fetchedBatches, 1);
// Let initial sync finish and get into secondary state.
-assert.commandWorked(secondary.getDB('admin').runCommand(
- {configureFailPoint: 'initialSyncHangBeforeFinish', mode: 'off'}));
+failPointBeforeFinish.off();
replSet.awaitSecondaryNodes(60 * 1000);
// Test that replSetGetStatus returns the correct results after initial sync is finished.
diff --git a/jstests/replsets/initial_sync_reset_oldest_timestamp_after_failed_attempt.js b/jstests/replsets/initial_sync_reset_oldest_timestamp_after_failed_attempt.js
index 0ec56197438..96a1663205a 100644
--- a/jstests/replsets/initial_sync_reset_oldest_timestamp_after_failed_attempt.js
+++ b/jstests/replsets/initial_sync_reset_oldest_timestamp_after_failed_attempt.js
@@ -9,7 +9,6 @@
(function() {
"use strict";
-load("jstests/libs/check_log.js");
load("jstests/core/txns/libs/prepare_helpers.js");
// Set the number of initial sync attempts to 2 so that the test fails on unplanned failures.
@@ -63,7 +62,8 @@ secondary = replTest.start(
true /* wait */);
// Wait for failpoint to be reached so we know that collection cloning is paused.
-checkLog.contains(secondary, "initialSyncHangAfterDataCloning fail point enabled");
+assert.commandWorked(
+ secondary.adminCommand({waitForFailPoint: "initialSyncHangAfterDataCloning", timesEntered: 1}));
jsTestLog("Running operations while collection cloning is paused");
@@ -82,7 +82,8 @@ assert.commandWorked(
secondary.adminCommand({configureFailPoint: "initialSyncHangAfterDataCloning", mode: "off"}));
// Wait for this failpoint to be hit before turning it off and causing initial sync to fail.
-checkLog.contains(secondary, "failInitialSyncBeforeApplyingBatch fail point enabled");
+assert.commandWorked(secondary.adminCommand(
+ {waitForFailPoint: "failInitialSyncBeforeApplyingBatch", timesEntered: 1}));
jsTestLog("Failing first initial sync attempt");
diff --git a/jstests/replsets/initial_sync_update_missing_doc_upsert.js b/jstests/replsets/initial_sync_update_missing_doc_upsert.js
index 9fe203fef67..d7637ac7ab7 100644
--- a/jstests/replsets/initial_sync_update_missing_doc_upsert.js
+++ b/jstests/replsets/initial_sync_update_missing_doc_upsert.js
@@ -10,8 +10,8 @@
*/
(function() {
+load("jstests/libs/fail_point_util.js");
load("jstests/replsets/libs/initial_sync_update_missing_doc.js");
-load("jstests/libs/check_log.js");
const replSet = new ReplSetTest({nodes: 1});
@@ -34,11 +34,10 @@ const secondary = reInitiateSetWithSecondary(replSet, secondaryConfig);
jsTestLog("Allow initial sync to finish cloning collections");
-assert.commandWorked(secondary.getDB('admin').runCommand(
- {configureFailPoint: 'initialSyncHangAfterDataCloning', mode: 'alwaysOn'}));
+let failPoint = configureFailPoint(secondary, 'initialSyncHangAfterDataCloning');
assert.commandWorked(secondary.getDB('admin').runCommand(
{configureFailPoint: 'initialSyncHangBeforeCopyingDatabases', mode: 'off'}));
-checkLog.contains(secondary, "initialSyncHangAfterDataCloning fail point enabled");
+failPoint.wait();
jsTestLog('Use both "update" and "applyOps" to upsert doc on primary');
@@ -94,8 +93,7 @@ for (let allowAtomic of [null, true, false]) {
jsTestLog("Allow initial sync to finish fetching and replaying oplog");
-assert.commandWorked(secondary.getDB('admin').runCommand(
- {configureFailPoint: 'initialSyncHangAfterDataCloning', mode: 'off'}));
+failPoint.off();
finishAndValidate(replSet, collectionName, numDocuments);
diff --git a/jstests/replsets/initial_sync_uuid_not_found.js b/jstests/replsets/initial_sync_uuid_not_found.js
index 50cc9f6b11b..f4be43c6dd0 100644
--- a/jstests/replsets/initial_sync_uuid_not_found.js
+++ b/jstests/replsets/initial_sync_uuid_not_found.js
@@ -7,8 +7,6 @@
(function() {
'use strict';
-load('jstests/libs/check_log.js');
-
const basename = 'initial_sync_rename_collection';
jsTestLog('Bring up set');
@@ -44,7 +42,8 @@ function ResyncWithFailpoint(failpointName, failpointData) {
const secondaryColl = secondaryDB[primaryColl.getName()];
rst.reInitiate();
- checkLog.contains(secondary, 'initial sync - ' + failpointName + ' fail point enabled');
+ assert.commandWorked(
+ secondary.adminCommand({waitForFailPoint: failpointName, timesEntered: 1}));
jsTestLog('Remove collection on the primary and insert a new document, recreating it.');
assert(primaryColl.drop());
diff --git a/jstests/replsets/libs/initial_sync_test.js b/jstests/replsets/libs/initial_sync_test.js
index 5a5b6a7bc56..6776cf7e629 100644
--- a/jstests/replsets/libs/initial_sync_test.js
+++ b/jstests/replsets/libs/initial_sync_test.js
@@ -15,6 +15,7 @@
"use strict";
load("jstests/libs/check_log.js");
+load("jstests/libs/fail_point_util.js");
load('jstests/replsets/rslib.js');
/**
@@ -183,11 +184,11 @@ function InitialSyncTest(name = "InitialSyncTest", replSet, timeout) {
* failpoint again.
*/
function pauseBeforeSyncSourceCommand() {
- assert.commandWorked(secondary.adminCommand(
- {"configureFailPoint": 'initialSyncFuzzerSynchronizationPoint2', "mode": 'alwaysOn'}));
+ const secondSyncFailPoint =
+ configureFailPoint(secondary, 'initialSyncFuzzerSynchronizationPoint2');
assert.commandWorked(secondary.adminCommand(
{"configureFailPoint": 'initialSyncFuzzerSynchronizationPoint1', "mode": 'off'}));
- checkLog.contains(secondary, "initialSyncFuzzerSynchronizationPoint2 fail point enabled");
+ secondSyncFailPoint.wait();
}
/**
diff --git a/jstests/replsets/libs/initial_sync_update_missing_doc.js b/jstests/replsets/libs/initial_sync_update_missing_doc.js
index 666d463ad23..f45d9a4e107 100644
--- a/jstests/replsets/libs/initial_sync_update_missing_doc.js
+++ b/jstests/replsets/libs/initial_sync_update_missing_doc.js
@@ -1,4 +1,7 @@
"use strict";
+
+load("jstests/libs/fail_point_util.js");
+
/**
* Initial sync runs in several phases - the first 3 are as follows:
* 1) fetches the last oplog entry (op_start1) on the source;
@@ -18,8 +21,7 @@ var reInitiateSetWithSecondary = function(replSet, secondaryConfig) {
// Make the secondary hang after retrieving the last op on the sync source but before
// copying databases.
- assert.commandWorked(secondary.getDB('admin').runCommand(
- {configureFailPoint: 'initialSyncHangBeforeCopyingDatabases', mode: 'alwaysOn'}));
+ let failPoint = configureFailPoint(secondary, 'initialSyncHangBeforeCopyingDatabases');
// Skip clearing initial sync progress after a successful initial sync attempt so that we
// can check initialSyncStatus fields after initial sync is complete.
@@ -29,8 +31,7 @@ var reInitiateSetWithSecondary = function(replSet, secondaryConfig) {
replSet.reInitiate();
// Wait for fail point message to be logged.
- checkLog.contains(secondary,
- 'initial sync - initialSyncHangBeforeCopyingDatabases fail point enabled');
+ failPoint.wait();
return secondary;
};