summaryrefslogtreecommitdiff
path: root/src/mongo/db/transaction
diff options
context:
space:
mode:
authorBenety Goh <benety@mongodb.com>2022-08-29 06:49:09 -0400
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-08-29 11:21:41 +0000
commit41c52264f5ad613ad0e0b265f32ce58b6f2b1295 (patch)
treeaed2469fd685b7637d7c195532e12984892197e7 /src/mongo/db/transaction
parentd5978f3d85b3764a3876553a893f458485dc6d3d (diff)
downloadmongo-41c52264f5ad613ad0e0b265f32ce58b6f2b1295.tar.gz
SERVER-68215 add MongoDSessionCatalogTransactionInterface::refreshLocksForPreparedTransaction()
Diffstat (limited to 'src/mongo/db/transaction')
-rw-r--r--src/mongo/db/transaction/session_catalog_mongod_transaction_interface_impl.cpp14
-rw-r--r--src/mongo/db/transaction/session_catalog_mongod_transaction_interface_impl.h3
2 files changed, 17 insertions, 0 deletions
diff --git a/src/mongo/db/transaction/session_catalog_mongod_transaction_interface_impl.cpp b/src/mongo/db/transaction/session_catalog_mongod_transaction_interface_impl.cpp
index 5fc2e6f2ce6..1706c932098 100644
--- a/src/mongo/db/transaction/session_catalog_mongod_transaction_interface_impl.cpp
+++ b/src/mongo/db/transaction/session_catalog_mongod_transaction_interface_impl.cpp
@@ -81,6 +81,20 @@ void MongoDSessionCatalogTransactionInterfaceImpl::abortTransaction(
opCtx->resetMultiDocumentTransactionState();
}
+void MongoDSessionCatalogTransactionInterfaceImpl::refreshLocksForPreparedTransaction(
+ OperationContext* opCtx, const OperationSessionInfo& sessionInfo) {
+ auto txnParticipant = TransactionParticipant::get(opCtx);
+ LOGV2_DEBUG(21979,
+ 3,
+ "Restoring locks of prepared transaction. SessionId: {sessionId} "
+ "TxnNumberAndRetryCounter: {txnNumberAndRetryCounter}",
+ "Restoring locks of prepared transaction",
+ "sessionId"_attr = sessionInfo.getSessionId()->getId(),
+ "txnNumberAndRetryCounter"_attr =
+ txnParticipant.getActiveTxnNumberAndRetryCounter());
+ txnParticipant.refreshLocksForPreparedTransaction(opCtx, /*yieldLocks=*/false);
+}
+
void MongoDSessionCatalogTransactionInterfaceImpl::invalidateSessionToKill(
OperationContext* opCtx, const SessionToKill& session) {
auto participant = TransactionParticipant::get(session);
diff --git a/src/mongo/db/transaction/session_catalog_mongod_transaction_interface_impl.h b/src/mongo/db/transaction/session_catalog_mongod_transaction_interface_impl.h
index c5d43d1ffd1..4b226c51703 100644
--- a/src/mongo/db/transaction/session_catalog_mongod_transaction_interface_impl.h
+++ b/src/mongo/db/transaction/session_catalog_mongod_transaction_interface_impl.h
@@ -60,6 +60,9 @@ public:
void abortTransaction(OperationContext* opCtx, const SessionTxnRecord& txnRecord) override;
+ void refreshLocksForPreparedTransaction(OperationContext* opCtx,
+ const OperationSessionInfo& sessionInfo) override;
+
void invalidateSessionToKill(OperationContext* opCtx, const SessionToKill& session) override;
ScanSessionsCallbackFn makeParentSessionWorkerFnForReap(