diff options
author | Gregory Wlodarek <gregory.wlodarek@mongodb.com> | 2019-05-20 10:41:02 -0400 |
---|---|---|
committer | Gregory Wlodarek <gregory.wlodarek@mongodb.com> | 2019-05-20 15:45:51 -0400 |
commit | ad2b5ce357ad424355f364c4c4cb6c2acae84be1 (patch) | |
tree | 4d7c5b77035f5d3cadf551a8c131b45a52772e53 | |
parent | 542d00d1a3a23d608f0a6e991684ea010cbc62ae (diff) | |
download | mongo-ad2b5ce357ad424355f364c4c4cb6c2acae84be1.tar.gz |
SERVER-41009 TimestampMonitor and getOldestActiveTimestamp shouldn't conflict with PBWM lock
-rw-r--r-- | src/mongo/db/storage/kv/kv_storage_engine.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/transaction_participant.cpp | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/mongo/db/storage/kv/kv_storage_engine.cpp b/src/mongo/db/storage/kv/kv_storage_engine.cpp index fe1ea716d72..4b55155450c 100644 --- a/src/mongo/db/storage/kv/kv_storage_engine.cpp +++ b/src/mongo/db/storage/kv/kv_storage_engine.cpp @@ -845,6 +845,9 @@ void KVStorageEngine::TimestampMonitor::startup() { uOpCtx = client->makeOperationContext(); opCtx = uOpCtx.get(); } + + ShouldNotConflictWithSecondaryBatchApplicationBlock shouldNotConflictBlock( + opCtx->lockState()); Lock::GlobalLock lock(opCtx, MODE_IS); // The checkpoint timestamp is not cached in mongod and needs to be fetched with a diff --git a/src/mongo/db/transaction_participant.cpp b/src/mongo/db/transaction_participant.cpp index 548453ab45a..0260a0509f5 100644 --- a/src/mongo/db/transaction_participant.cpp +++ b/src/mongo/db/transaction_participant.cpp @@ -349,6 +349,9 @@ TransactionParticipant::getOldestActiveTimestamp(Timestamp stableTimestamp) { auto opCtx = cc().makeOperationContext(); auto nss = NamespaceString::kSessionTransactionsTableNamespace; auto deadline = Date_t::now() + Milliseconds(100); + + ShouldNotConflictWithSecondaryBatchApplicationBlock shouldNotConflictBlock( + opCtx->lockState()); Lock::DBLock dbLock(opCtx.get(), nss.db(), MODE_IS, deadline); Lock::CollectionLock collLock(opCtx.get(), nss, MODE_IS, deadline); |