diff options
Diffstat (limited to 'src/mongo/db/transaction_participant.cpp')
-rw-r--r-- | src/mongo/db/transaction_participant.cpp | 24 |
1 files changed, 3 insertions, 21 deletions
diff --git a/src/mongo/db/transaction_participant.cpp b/src/mongo/db/transaction_participant.cpp index 95cbf2dd09b..17d440103a2 100644 --- a/src/mongo/db/transaction_participant.cpp +++ b/src/mongo/db/transaction_participant.cpp @@ -1051,29 +1051,11 @@ void TransactionParticipant::abortArbitraryTransaction() { _abortTransactionOnSession(lock); } -void TransactionParticipant::abortArbitraryTransactionIfExpired() { +bool TransactionParticipant::expired() const { stdx::lock_guard<stdx::mutex> lock(_mutex); - if (!_txnState.isInProgress(lock) || !_transactionExpireDate || - _transactionExpireDate >= Date_t::now()) { - return; - } - - const auto* session = getTransactionParticipant.owner(this); - auto currentOperation = session->currentOperation(); - if (currentOperation) { - // If an operation is still running for this transaction when it expires, kill the currently - // running operation. - stdx::lock_guard<Client> clientLock(*currentOperation->getClient()); - getGlobalServiceContext()->killOperation(currentOperation, ErrorCodes::ExceededTimeLimit); - } - - // Log after killing the current operation because jstests may wait to see this log message to - // imply that the operation has been killed. - log() << "Aborting transaction with txnNumber " << _activeTxnNumber << " on session with lsid " - << session->getSessionId().getId() - << " because it has been running for longer than 'transactionLifetimeLimitSeconds'"; - _abortTransactionOnSession(lock); + return _txnState.isInProgress(lock) && _transactionExpireDate && + _transactionExpireDate < getGlobalServiceContext()->getPreciseClockSource()->now(); } void TransactionParticipant::abortActiveTransaction(OperationContext* opCtx) { |