diff options
| author | Tommaso Tocci <tommaso.tocci@mongodb.com> | 2023-04-05 16:21:13 +0200 |
|---|---|---|
| committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2023-04-05 18:01:32 +0000 |
| commit | f2df94329a61c09fddeb8007b184b900be22b774 (patch) | |
| tree | ff1fa08d9b396b7bb2c65624e939cc7492217797 /src/mongo/db/repl/oplog_applier_impl.cpp | |
| parent | cd5efd2b01aa85b45901e192ad3e0320505e2f8d (diff) | |
| download | mongo-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.cpp | 33 |
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; } |
