diff options
author | Samy Lanka <samy.lanka@mongodb.com> | 2020-12-16 03:46:18 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-01-21 04:28:30 +0000 |
commit | 5e9d3327d5d08288a932ee77db3be4eb0d45c9c8 (patch) | |
tree | 1511073b844a885fc3b68da1e337d7ff8b458629 /src/mongo/db/repl/transaction_oplog_application.cpp | |
parent | 80deb6d3a24f6cb3bf60fbce16f7004a259ce99e (diff) | |
download | mongo-5e9d3327d5d08288a932ee77db3be4eb0d45c9c8.tar.gz |
SERVER-50486 Always interrupt multi-document transactions on step down or step up
Diffstat (limited to 'src/mongo/db/repl/transaction_oplog_application.cpp')
-rw-r--r-- | src/mongo/db/repl/transaction_oplog_application.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/src/mongo/db/repl/transaction_oplog_application.cpp b/src/mongo/db/repl/transaction_oplog_application.cpp index c193b91fbbb..b5f0d1fece3 100644 --- a/src/mongo/db/repl/transaction_oplog_application.cpp +++ b/src/mongo/db/repl/transaction_oplog_application.cpp @@ -59,6 +59,8 @@ MONGO_FAIL_POINT_DEFINE(skipReconstructPreparedTransactions); // conflict error. MONGO_FAIL_POINT_DEFINE(applyPrepareTxnOpsFailsWithWriteConflict); +MONGO_FAIL_POINT_DEFINE(hangBeforeSessionCheckOutForApplyPrepare); + // Apply the oplog entries for a prepare or a prepared commit during recovery/initial sync. Status _applyOperationsForTransaction(OperationContext* opCtx, const std::vector<OplogEntry>& ops, @@ -419,6 +421,7 @@ Status _applyPrepareTransaction(OperationContext* opCtx, // The write on transaction table may be applied concurrently, so refreshing state // from disk may read that write, causing starting a new transaction on an existing // txnNumber. Thus, we start a new transaction without refreshing state from disk. + hangBeforeSessionCheckOutForApplyPrepare.pauseWhileSet(); MongoDOperationContextSessionWithoutRefresh sessionCheckout(opCtx); auto txnParticipant = TransactionParticipant::get(opCtx); |