diff options
author | Blake Oler <blake.oler@mongodb.com> | 2021-04-27 21:02:38 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-04-29 16:02:14 +0000 |
commit | 71b7bfbd35c779d59d5d24db860513aaf3c9e365 (patch) | |
tree | d962ab458ce364c4dbef390b4e2b3ffae59077c8 | |
parent | 67db15323c295c19fc42af721dd741dd18a8dbb8 (diff) | |
download | mongo-71b7bfbd35c779d59d5d24db860513aaf3c9e365.tar.gz |
SERVER-55873 Force secondaries to apply each write to config.localReshardingOperations.donor in its own batch
-rw-r--r-- | src/mongo/db/namespace_string.cpp | 1 | ||||
-rw-r--r-- | src/mongo/db/repl/oplog_applier_test.cpp | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/mongo/db/namespace_string.cpp b/src/mongo/db/namespace_string.cpp index d8e0ad191f4..6f1b7c63622 100644 --- a/src/mongo/db/namespace_string.cpp +++ b/src/mongo/db/namespace_string.cpp @@ -192,6 +192,7 @@ bool NamespaceString::isLegalClientSystemNS( */ bool NamespaceString::mustBeAppliedInOwnOplogBatch() const { return isSystemDotViews() || isServerConfigurationCollection() || isPrivilegeCollection() || + _ns == kDonorReshardingOperationsNamespace.ns() || _ns == kForceOplogBatchBoundaryNamespace.ns(); } diff --git a/src/mongo/db/repl/oplog_applier_test.cpp b/src/mongo/db/repl/oplog_applier_test.cpp index 994b36523ce..5fc5420cf17 100644 --- a/src/mongo/db/repl/oplog_applier_test.cpp +++ b/src/mongo/db/repl/oplog_applier_test.cpp @@ -163,6 +163,17 @@ TEST_F(OplogApplierTest, GetNextApplierBatchReturnsServerConfigurationOpInOwnBat ASSERT_EQUALS(srcOps[0], batch[0]); } +TEST_F(OplogApplierTest, GetNextApplierBatchReturnsConfigReshardingDonorOpInOwnBatch) { + std::vector<OplogEntry> srcOps; + srcOps.push_back(makeInsertOplogEntry(1, NamespaceString::kDonorReshardingOperationsNamespace)); + srcOps.push_back(makeInsertOplogEntry(2, NamespaceString(dbName, "bar"))); + _applier->enqueue(_opCtx.get(), srcOps.cbegin(), srcOps.cend()); + + auto batch = unittest::assertGet(_applier->getNextApplierBatch(_opCtx.get(), _limits)); + ASSERT_EQUALS(1U, batch.size()) << toString(batch); + ASSERT_EQUALS(srcOps[0], batch[0]); +} + TEST_F(OplogApplierTest, GetNextApplierBatchReturnsPreparedCommitTransactionOpInOwnBatch) { std::vector<OplogEntry> srcOps; srcOps.push_back(makeCommitTransactionOplogEntry(1, dbName, true, 3)); |