summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/transaction_oplog_application.cpp
diff options
context:
space:
mode:
authorSamy Lanka <samy.lanka@mongodb.com>2021-09-09 19:16:11 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-09-09 20:29:22 +0000
commitea2ea50017f76adf68ca3cb385546774a251c42e (patch)
treed49d678e79d4916ae225141aa509befc4c683bcb /src/mongo/db/repl/transaction_oplog_application.cpp
parent6e2d551ce63c717ce367d9a67f0542386313880d (diff)
downloadmongo-ea2ea50017f76adf68ca3cb385546774a251c42e.tar.gz
SERVER-58183 Ensure that we ignore prepare conflicts when applying pr…
Diffstat (limited to 'src/mongo/db/repl/transaction_oplog_application.cpp')
-rw-r--r--src/mongo/db/repl/transaction_oplog_application.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/mongo/db/repl/transaction_oplog_application.cpp b/src/mongo/db/repl/transaction_oplog_application.cpp
index 52ff70424b3..d2fb7f0a178 100644
--- a/src/mongo/db/repl/transaction_oplog_application.cpp
+++ b/src/mongo/db/repl/transaction_oplog_application.cpp
@@ -440,6 +440,10 @@ Status _applyPrepareTransaction(OperationContext* opCtx,
auto txnParticipant = TransactionParticipant::get(opCtx);
+ // We reset the recovery unit on retries, so make sure that we ignore prepare conflicts.
+ opCtx->recoveryUnit()->setPrepareConflictBehavior(
+ PrepareConflictBehavior::kIgnoreConflictsAllowWrites);
+
// Release the WUOW, transaction lock resources and abort storage transaction so that the
// writeConflictRetry loop will be able to retry applying transactional ops on WCE error.
ScopeGuard abortOnError([&txnParticipant, opCtx] {