summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl
diff options
context:
space:
mode:
authorMatthew Russotto <matthew.russotto@mongodb.com>2020-08-28 11:47:54 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2020-09-22 14:21:00 +0000
commit418f559e6f407c6ca391ebd4bac177251ed5affb (patch)
tree57d379db413a10152c4f98fc88ca90e9dfcdfbc8 /src/mongo/db/repl
parentb1d4d55ec0af8a7b2f5cbefdb8dd590607dfe732 (diff)
downloadmongo-418f559e6f407c6ca391ebd4bac177251ed5affb.tar.gz
SERVER-50607 Must hold mutex when calling _checkForShutdownAndConvertStatus_inlock
(cherry picked from commit a5ed6a52228efbaad71aa62324a36740fc8877a2)
Diffstat (limited to 'src/mongo/db/repl')
-rw-r--r--src/mongo/db/repl/initial_syncer.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/mongo/db/repl/initial_syncer.cpp b/src/mongo/db/repl/initial_syncer.cpp
index 3aaa4ea6dcc..e1f7171634e 100644
--- a/src/mongo/db/repl/initial_syncer.cpp
+++ b/src/mongo/db/repl/initial_syncer.cpp
@@ -445,11 +445,16 @@ 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<stdx::mutex> lock(_mutex);
+ return _checkForShutdownAndConvertStatus_inlock(
+ callbackArgs,
+ str::stream() << "error while starting initial sync attempt "
+ << (initialSyncAttempt + 1)
+ << " of "
+ << initialSyncMaxAttempts);
+ }();
+
if (!status.isOK()) {
_finishInitialSyncAttempt(status);
return;