diff options
author | Matthew Russotto <matthew.russotto@mongodb.com> | 2020-08-28 11:47:54 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2020-09-22 14:27:11 +0000 |
commit | 88276238fa97b47c0ef14362b343c5317ecbd739 (patch) | |
tree | 67b435cb14b530f485c72da8e2db1b72c3a1a65b | |
parent | 1c0bb27ce1d10d0ebc29d072881ee295e6cde5ad (diff) | |
download | mongo-88276238fa97b47c0ef14362b343c5317ecbd739.tar.gz |
SERVER-50607 Must hold mutex when calling _checkForShutdownAndConvertStatus_inlockr4.2.10-rc0r4.2.10
(cherry picked from commit a5ed6a52228efbaad71aa62324a36740fc8877a2)
-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; |