diff options
author | Benety Goh <benety@mongodb.com> | 2022-08-29 06:49:09 -0400 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-08-29 11:21:41 +0000 |
commit | 41c52264f5ad613ad0e0b265f32ce58b6f2b1295 (patch) | |
tree | aed2469fd685b7637d7c195532e12984892197e7 /src/mongo/db/transaction | |
parent | d5978f3d85b3764a3876553a893f458485dc6d3d (diff) | |
download | mongo-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.cpp | 14 | ||||
-rw-r--r-- | src/mongo/db/transaction/session_catalog_mongod_transaction_interface_impl.h | 3 |
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( |