diff options
Diffstat (limited to 'src/mongo/db/s/txn_two_phase_commit_cmds.cpp')
-rw-r--r-- | src/mongo/db/s/txn_two_phase_commit_cmds.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/src/mongo/db/s/txn_two_phase_commit_cmds.cpp b/src/mongo/db/s/txn_two_phase_commit_cmds.cpp index 342ead52a0a..948a39982b4 100644 --- a/src/mongo/db/s/txn_two_phase_commit_cmds.cpp +++ b/src/mongo/db/s/txn_two_phase_commit_cmds.cpp @@ -298,16 +298,15 @@ public: { MongoDOperationContextSession sessionTxnState(opCtx); auto txnParticipant = TransactionParticipant::get(opCtx); - txnParticipant.beginOrContinue(opCtx, *opCtx->getTxnNumber(), false /* autocommit */, boost::none /* startTransaction */); - try { - txnParticipant.abortTransactionIfNotPrepared(opCtx); - } catch (const ExceptionFor<ErrorCodes::TransactionCommitted>&) { + if (txnParticipant.transactionIsCommitted()) return; + if (txnParticipant.transactionIsInProgress()) { + txnParticipant.abortTransaction(opCtx); } participantExitPrepareFuture = txnParticipant.onExitPrepare(); |