summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mongo/db/repl/initial_syncer.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/mongo/db/repl/initial_syncer.cpp b/src/mongo/db/repl/initial_syncer.cpp
index 59ecadc89d9..589736ec2db 100644
--- a/src/mongo/db/repl/initial_syncer.cpp
+++ b/src/mongo/db/repl/initial_syncer.cpp
@@ -497,10 +497,14 @@ void InitialSyncer::_startInitialSyncAttemptCallback(
const executor::TaskExecutor::CallbackArgs& callbackArgs,
std::uint32_t initialSyncAttempt,
std::uint32_t initialSyncMaxAttempts) noexcept {
- auto status = _checkForShutdownAndConvertStatus_inlock(
- callbackArgs,
- str::stream() << "error while starting initial sync attempt " << (initialSyncAttempt + 1)
- << " of " << initialSyncMaxAttempts);
+ auto status = [&] {
+ stdx::lock_guard<Latch> lock(_mutex);
+ return _checkForShutdownAndConvertStatus_inlock(
+ callbackArgs,
+ str::stream() << "error while starting initial sync attempt "
+ << (initialSyncAttempt + 1) << " of " << initialSyncMaxAttempts);
+ }();
+
if (!status.isOK()) {
_finishInitialSyncAttempt(status);
return;