diff options
author | Benety Goh <benety@mongodb.com> | 2023-01-20 15:01:10 -0500 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2023-01-20 21:16:11 +0000 |
commit | d4c9920963d4475624eb58fc62ca0ce61f1f0846 (patch) | |
tree | ff19b1415a657632f072b1a5347f4805fc8ad90f /src/mongo/db/repl/oplog_applier_impl.cpp | |
parent | 8e08ea05475b8d9249d59c8b41f9cd250a21fbb9 (diff) | |
download | mongo-d4c9920963d4475624eb58fc62ca0ce61f1f0846.tar.gz |
SERVER-73131 add invariant for abortTransaction and cached partial transaction operations in the same batch
Diffstat (limited to 'src/mongo/db/repl/oplog_applier_impl.cpp')
-rw-r--r-- | src/mongo/db/repl/oplog_applier_impl.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/mongo/db/repl/oplog_applier_impl.cpp b/src/mongo/db/repl/oplog_applier_impl.cpp index 7f41a03865d..e61ec3397a0 100644 --- a/src/mongo/db/repl/oplog_applier_impl.cpp +++ b/src/mongo/db/repl/oplog_applier_impl.cpp @@ -43,6 +43,7 @@ #include "mongo/db/db_raii.h" #include "mongo/db/repl/apply_ops.h" #include "mongo/db/repl/oplog_applier_utils.h" +#include "mongo/db/repl/oplog_batcher.h" #include "mongo/db/repl/repl_server_parameters_gen.h" #include "mongo/db/repl/transaction_oplog_application.h" #include "mongo/db/session/logical_session_id.h" @@ -734,8 +735,9 @@ void OplogApplierImpl::_deriveOpsAndFillWriterVectors( } if (op.getCommandType() == OplogEntry::CommandType::kAbortTransaction) { - auto& partialTxnList = partialTxnOps[*op.getSessionId()]; - partialTxnList.clear(); + // Under current oplog batching rules, it is not possible for abortTransaction to + // be in the same batch as a preceding partial transaction applyOps oplog entry. + invariant(partialTxnOps.empty(), op.toStringForLogging()); } // Extract applyOps operations and fill writers with extracted operations using this |