diff options
| author | Gregory Noma <gregory.noma@gmail.com> | 2022-05-25 12:40:40 +0000 |
|---|---|---|
| committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-05-26 13:38:04 +0000 |
| commit | faf655827b3acedf1513bc140e753a5556f2e5a3 (patch) | |
| tree | 381376cad1e209bd41bb7ba34a943ae6a86e5510 /src | |
| parent | 78889bdd2b6c6180483d97e5fa220aa660f23a03 (diff) | |
SERVER-66719 Take FCV lock in `MODE_IS` for shared global lock modesr5.3.2-rc2r5.3.2
(cherry picked from commit 1c3268ae7fd8ffd678c20d5f2ac977be2a2c982f)
Diffstat (limited to 'src')
| -rw-r--r-- | src/mongo/db/concurrency/d_concurrency.cpp | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/src/mongo/db/concurrency/d_concurrency.cpp b/src/mongo/db/concurrency/d_concurrency.cpp index d63ac182dc1..6d002a08ff8 100644 --- a/src/mongo/db/concurrency/d_concurrency.cpp +++ b/src/mongo/db/concurrency/d_concurrency.cpp @@ -149,13 +149,11 @@ Lock::GlobalLock::GlobalLock(OperationContext* opCtx, } }); - if (_opCtx->lockState()->shouldConflictWithSetFeatureCompatibilityVersion() && - !isSharedLockMode(lockMode)) { - _fcvLock.lock(_opCtx, MODE_IX, deadline); + if (_opCtx->lockState()->shouldConflictWithSetFeatureCompatibilityVersion()) { + _fcvLock.lock(_opCtx, isSharedLockMode(lockMode) ? MODE_IS : MODE_IX, deadline); } - ScopeGuard unlockFCVLock([this, lockMode] { - if (_opCtx->lockState()->shouldConflictWithSetFeatureCompatibilityVersion() && - !isSharedLockMode(lockMode)) { + ScopeGuard unlockFCVLock([this] { + if (_opCtx->lockState()->shouldConflictWithSetFeatureCompatibilityVersion()) { _fcvLock.unlock(); } }); |
