diff options
author | Ian Boros <ian.boros@10gen.com> | 2018-11-28 18:38:15 -0500 |
---|---|---|
committer | Ian Boros <ian.boros@10gen.com> | 2018-12-17 16:36:20 -0500 |
commit | d40d24abc025690150ccf8009ba1facb9ed1c6b2 (patch) | |
tree | 8ba35e0d4f8c7e441ffe80de30faa24a708c436e /src/mongo/db/session_catalog_mongod.cpp | |
parent | b37b5ef7ec0ec2e502423d53e6c0d6e86b343c27 (diff) | |
download | mongo-d40d24abc025690150ccf8009ba1facb9ed1c6b2.tar.gz |
SERVER-33683 Prevent deadlock in aggregate with transactions
Diffstat (limited to 'src/mongo/db/session_catalog_mongod.cpp')
-rw-r--r-- | src/mongo/db/session_catalog_mongod.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/mongo/db/session_catalog_mongod.cpp b/src/mongo/db/session_catalog_mongod.cpp index acb0a8e5c62..9ef31bc588b 100644 --- a/src/mongo/db/session_catalog_mongod.cpp +++ b/src/mongo/db/session_catalog_mongod.cpp @@ -200,6 +200,22 @@ MongoDOperationContextSession::MongoDOperationContextSession(OperationContext* o MongoDOperationContextSession::~MongoDOperationContextSession() = default; +void MongoDOperationContextSession::checkIn(OperationContext* opCtx) { + + if (auto txnParticipant = TransactionParticipant::get(opCtx)) { + txnParticipant->stashTransactionResources(opCtx); + } + + OperationContextSession::checkIn(opCtx); +} + +void MongoDOperationContextSession::checkOut(OperationContext* opCtx, const std::string& cmdName) { + OperationContextSession::checkOut(opCtx); + + if (auto txnParticipant = TransactionParticipant::get(opCtx)) { + txnParticipant->unstashTransactionResources(opCtx, cmdName); + } +} MongoDOperationContextSessionWithoutRefresh::MongoDOperationContextSessionWithoutRefresh( OperationContext* opCtx) |