diff options
-rw-r--r-- | src/mongo/db/repl/initial_syncer.cpp | 12 |
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; |