summaryrefslogtreecommitdiff
path: root/src/mongo/db/session_catalog_mongod.cpp
diff options
context:
space:
mode:
authorIan Boros <ian.boros@10gen.com>2018-11-28 18:38:15 -0500
committerIan Boros <ian.boros@10gen.com>2018-12-17 16:36:20 -0500
commitd40d24abc025690150ccf8009ba1facb9ed1c6b2 (patch)
tree8ba35e0d4f8c7e441ffe80de30faa24a708c436e /src/mongo/db/session_catalog_mongod.cpp
parentb37b5ef7ec0ec2e502423d53e6c0d6e86b343c27 (diff)
downloadmongo-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.cpp16
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)