summaryrefslogtreecommitdiff
path: root/src/mongo/db/repl/oplog_applier_impl.cpp
diff options
context:
space:
mode:
authorTommaso Tocci <tommaso.tocci@mongodb.com>2023-04-05 16:21:13 +0200
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2023-04-05 18:01:32 +0000
commitf2df94329a61c09fddeb8007b184b900be22b774 (patch)
treeff1fa08d9b396b7bb2c65624e939cc7492217797 /src/mongo/db/repl/oplog_applier_impl.cpp
parentcd5efd2b01aa85b45901e192ad3e0320505e2f8d (diff)
downloadmongo-f2df94329a61c09fddeb8007b184b900be22b774.tar.gz
Revert "SERVER-66715 Add tenant lock"
This reverts commit b9d8a47872050ca5fe6c1b95fcb0534e6e0ebc3d.
Diffstat (limited to 'src/mongo/db/repl/oplog_applier_impl.cpp')
-rw-r--r--src/mongo/db/repl/oplog_applier_impl.cpp33
1 files changed, 11 insertions, 22 deletions
diff --git a/src/mongo/db/repl/oplog_applier_impl.cpp b/src/mongo/db/repl/oplog_applier_impl.cpp
index baff24f4ba7..86e7b36872c 100644
--- a/src/mongo/db/repl/oplog_applier_impl.cpp
+++ b/src/mongo/db/repl/oplog_applier_impl.cpp
@@ -140,31 +140,14 @@ Status _insertDocumentsToOplogAndChangeCollections(
std::vector<InsertStatement>::const_iterator end,
bool skipWritesToOplog) {
WriteUnitOfWork wunit(opCtx);
- boost::optional<AutoGetOplog> autoOplog;
- boost::optional<ChangeStreamChangeCollectionManager::ChangeCollectionsWriter>
- changeCollectionWriter;
- // Acquire locks. We must acquire the locks for all collections we intend to write to before
- // performing any writes. This avoids potential deadlocks created by waiting for locks while
- // having generated oplog holes.
if (!skipWritesToOplog) {
- autoOplog.emplace(opCtx, OplogAccessMode::kWrite);
- }
- const bool changeCollectionsMode =
- change_stream_serverless_helpers::isChangeCollectionsModeActive();
- if (changeCollectionsMode) {
- changeCollectionWriter = boost::make_optional(
- ChangeStreamChangeCollectionManager::get(opCtx).createChangeCollectionsWriter(
- opCtx, begin, end, nullptr /* opDebug */));
- changeCollectionWriter->acquireLocks();
- }
-
- // Write entries to the oplog.
- if (!skipWritesToOplog) {
- auto& oplogColl = autoOplog->getCollection();
+ AutoGetOplog autoOplog(opCtx, OplogAccessMode::kWrite);
+ auto& oplogColl = autoOplog.getCollection();
if (!oplogColl) {
return {ErrorCodes::NamespaceNotFound, "Oplog collection does not exist"};
}
+
auto status = collection_internal::insertDocuments(
opCtx, oplogColl, begin, end, nullptr /* OpDebug */, false /* fromMigrate */);
if (!status.isOK()) {
@@ -174,8 +157,14 @@ Status _insertDocumentsToOplogAndChangeCollections(
// Write the corresponding oplog entries to tenants respective change
// collections in the serverless.
- if (changeCollectionsMode) {
- auto status = changeCollectionWriter->write();
+ if (change_stream_serverless_helpers::isChangeCollectionsModeActive()) {
+ auto status =
+ ChangeStreamChangeCollectionManager::get(opCtx).insertDocumentsToChangeCollection(
+ opCtx,
+ begin,
+ end,
+ !skipWritesToOplog /* hasAcquiredGlobalIXLock */,
+ nullptr /* OpDebug */);
if (!status.isOK()) {
return status;
}