summaryrefslogtreecommitdiff
path: root/src/mongo/db/s/txn_two_phase_commit_cmds.cpp
diff options
context:
space:
mode:
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.cpp7
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();