summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/oplog_applier.cpp
diff options
context:
space:
mode:
authorSiyuan Zhou <siyuan.zhou@mongodb.com>2018-10-05 21:59:19 -0400
committerSiyuan Zhou <siyuan.zhou@mongodb.com>2018-10-08 17:42:02 -0400
commitd753adf541a85c152fa0db90432accfce3d49676 (patch)
treeb76d6a6cb95a1efdf94a44445d7579c49bfae3e3 /src/mongo/db/repl/oplog_applier.cpp
parent2718702ac721b29a065fa1e2f4949737c1c374ae (diff)
downloadmongo-d753adf541a85c152fa0db90432accfce3d49676.tar.gz
SERVER-37505 Run applyOps with prepare: true in its own batch in MultiApplier.
Diffstat (limited to 'src/mongo/db/repl/oplog_applier.cpp')
-rw-r--r--src/mongo/db/repl/oplog_applier.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/mongo/db/repl/oplog_applier.cpp b/src/mongo/db/repl/oplog_applier.cpp
index e7c5160f902..3b86518fd7c 100644
--- a/src/mongo/db/repl/oplog_applier.cpp
+++ b/src/mongo/db/repl/oplog_applier.cpp
@@ -179,7 +179,8 @@ StatusWith<OplogApplier::Operations> OplogApplier::getNextApplierBatch(
// Commands must be processed one at a time. The only exception to this is applyOps because
// applyOps oplog entries are effectively containers for CRUD operations. Therefore, it is
// safe to batch applyOps commands with CRUD operations when reading from the oplog buffer.
- if (entry.isCommand() && entry.getCommandType() != OplogEntry::CommandType::kApplyOps) {
+ if (entry.isCommand() && (entry.getCommandType() != OplogEntry::CommandType::kApplyOps ||
+ entry.shouldPrepare())) {
if (ops.empty()) {
// Apply commands one-at-a-time.
ops.push_back(std::move(entry));