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-02 15:42:22 +0000 |
commit | a5ed6a52228efbaad71aa62324a36740fc8877a2 (patch) | |
tree | 66b5182884e1cbe28ae776fc6bd63d25e1a57ba7 /src/mongo/db | |
parent | ee0d4ce5c3503e8d8dfebac39a07242fddae0d18 (diff) | |
download | mongo-a5ed6a52228efbaad71aa62324a36740fc8877a2.tar.gz |
SERVER-50607 Must hold mutex when calling _checkForShutdownAndConvertStatus_inlock
Diffstat (limited to 'src/mongo/db')
-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 d91141560ac..0048ff09bf1 100644 --- a/src/mongo/db/repl/initial_syncer.cpp +++ b/src/mongo/db/repl/initial_syncer.cpp @@ -578,10 +578,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; |