summaryrefslogtreecommitdiff
path: root/src/mongo/db/transaction_participant.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/transaction_participant.cpp')
-rw-r--r--src/mongo/db/transaction_participant.cpp24
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) {