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:21:00 +0000 |
commit | 418f559e6f407c6ca391ebd4bac177251ed5affb (patch) | |
tree | 57d379db413a10152c4f98fc88ca90e9dfcdfbc8 /src/mongo/db/repl | |
parent | b1d4d55ec0af8a7b2f5cbefdb8dd590607dfe732 (diff) | |
download | mongo-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.cpp | 15 |
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; |