diff options
author | jannaerin <golden.janna@gmail.com> | 2022-07-15 15:13:00 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-07-15 16:37:02 +0000 |
commit | 299c4b3e46075a01ab8d0989bca5358a2b0603ae (patch) | |
tree | b01d0e260502be4346f346d8d8d3239836a8d087 /src/mongo/db/s | |
parent | a16f7f1ee85ac854db4e92294ceb392043623fea (diff) | |
download | mongo-299c4b3e46075a01ab8d0989bca5358a2b0603ae.tar.gz |
SERVER-62923 Change DB lock RAII types to use DatabaseName
Diffstat (limited to 'src/mongo/db/s')
15 files changed, 23 insertions, 21 deletions
diff --git a/src/mongo/db/s/database_sharding_state_test.cpp b/src/mongo/db/s/database_sharding_state_test.cpp index a0848154f53..bc263c5ab50 100644 --- a/src/mongo/db/s/database_sharding_state_test.cpp +++ b/src/mongo/db/s/database_sharding_state_test.cpp @@ -137,7 +137,7 @@ TEST_F(DatabaseShardingStateTestWithMockedLoader, OnDbVersionMismatch) { auto opCtx = operationContext(); auto getActiveDbVersion = [&] { - AutoGetDb autoDb(opCtx, kDbName, MODE_IS); + AutoGetDb autoDb(opCtx, DatabaseName(boost::none, kDbName), MODE_IS); return DatabaseHolder::get(opCtx)->getDbVersion(opCtx, kDbName); }; @@ -170,7 +170,7 @@ TEST_F(DatabaseShardingStateTestWithMockedLoader, ForceDatabaseRefresh) { forceDatabaseRefresh(opCtx, kDbName); boost::optional<DatabaseVersion> activeDbVersion = [&] { - AutoGetDb autoDb(opCtx, kDbName, MODE_IS); + AutoGetDb autoDb(opCtx, DatabaseName(boost::none, kDbName), MODE_IS); return DatabaseHolder::get(opCtx)->getDbVersion(opCtx, kDbName); }(); ASSERT_TRUE(activeDbVersion); diff --git a/src/mongo/db/s/get_database_version_command.cpp b/src/mongo/db/s/get_database_version_command.cpp index 2b5ebd0ff2a..a906d3a0b89 100644 --- a/src/mongo/db/s/get_database_version_command.cpp +++ b/src/mongo/db/s/get_database_version_command.cpp @@ -80,7 +80,7 @@ public: str::stream() << definition()->getName() << " can only be run on shard servers", serverGlobalParams.clusterRole == ClusterRole::ShardServer); BSONObj versionObj; - AutoGetDb autoDb(opCtx, _targetDb(), MODE_IS); + AutoGetDb autoDb(opCtx, DatabaseName(boost::none, _targetDb()), MODE_IS); if (const auto dbVersion = DatabaseHolder::get(opCtx)->getDbVersion(opCtx, _targetDb())) { diff --git a/src/mongo/db/s/migration_chunk_cloner_source_legacy_test.cpp b/src/mongo/db/s/migration_chunk_cloner_source_legacy_test.cpp index 4837f2bb552..b5046b97d86 100644 --- a/src/mongo/db/s/migration_chunk_cloner_source_legacy_test.cpp +++ b/src/mongo/db/s/migration_chunk_cloner_source_legacy_test.cpp @@ -182,7 +182,7 @@ protected: ChunkVersion({epoch, timestamp}, {1, 0}), ShardId("dummyShardId")}}); - AutoGetDb autoDb(operationContext(), kNss.db(), MODE_IX); + AutoGetDb autoDb(operationContext(), kNss.dbName(), MODE_IX); Lock::CollectionLock collLock(operationContext(), kNss, MODE_IX); CollectionShardingRuntime::get(operationContext(), kNss) ->setFilteringMetadata( diff --git a/src/mongo/db/s/migration_destination_manager.cpp b/src/mongo/db/s/migration_destination_manager.cpp index bc707e25182..58fe7659d21 100644 --- a/src/mongo/db/s/migration_destination_manager.cpp +++ b/src/mongo/db/s/migration_destination_manager.cpp @@ -992,7 +992,7 @@ void MigrationDestinationManager::cloneCollectionIndexesAndOptions( // Take the exclusive database lock if the collection does not exist or indexes are missing // (needs auto-heal). - AutoGetDb autoDb(opCtx, nss.db(), MODE_X); + AutoGetDb autoDb(opCtx, nss.dbName(), MODE_X); auto db = autoDb.ensureDbExists(opCtx); auto collection = CollectionCatalog::get(opCtx)->lookupCollectionByNamespace(opCtx, nss); diff --git a/src/mongo/db/s/migration_util.cpp b/src/mongo/db/s/migration_util.cpp index a0a1471a5e3..e71dfe04d89 100644 --- a/src/mongo/db/s/migration_util.cpp +++ b/src/mongo/db/s/migration_util.cpp @@ -1067,7 +1067,7 @@ void recoverMigrationCoordinations(OperationContext* opCtx, } auto setFilteringMetadata = [&opCtx, ¤tMetadata, &doc, &cancellationToken]() { - AutoGetDb autoDb(opCtx, doc.getNss().db(), MODE_IX); + AutoGetDb autoDb(opCtx, doc.getNss().dbName(), MODE_IX); Lock::CollectionLock collLock(opCtx, doc.getNss(), MODE_IX); auto* const csr = CollectionShardingRuntime::get(opCtx, doc.getNss()); diff --git a/src/mongo/db/s/move_primary_source_manager.cpp b/src/mongo/db/s/move_primary_source_manager.cpp index 11b8390f55a..e016d060f09 100644 --- a/src/mongo/db/s/move_primary_source_manager.cpp +++ b/src/mongo/db/s/move_primary_source_manager.cpp @@ -100,7 +100,7 @@ Status MovePrimarySourceManager::clone(OperationContext* opCtx) { { // We use AutoGetDb::ensureDbExists() the first time just in case movePrimary was called // before any data was inserted into the database. - AutoGetDb autoDb(opCtx, getNss().toString(), MODE_X); + AutoGetDb autoDb(opCtx, getNss().dbName(), MODE_X); invariant(autoDb.ensureDbExists(opCtx), getNss().toString()); auto dss = DatabaseShardingState::get(opCtx, getNss().toString()); @@ -164,7 +164,7 @@ Status MovePrimarySourceManager::enterCriticalSection(OperationContext* opCtx) { // The critical section must be entered with the database X lock in order to ensure there // are no writes which could have entered and passed the database version check just before // we entered the critical section, but will potentially complete after we left it. - AutoGetDb autoDb(opCtx, getNss().toString(), MODE_X); + AutoGetDb autoDb(opCtx, getNss().dbName(), MODE_X); if (!autoDb.getDb()) { uasserted(ErrorCodes::ConflictingOperationInProgress, @@ -213,7 +213,7 @@ Status MovePrimarySourceManager::commitOnConfig(OperationContext* opCtx) { ScopeGuard scopedGuard([&] { cleanupOnError(opCtx); }); { - AutoGetDb autoDb(opCtx, getNss().toString(), MODE_X); + AutoGetDb autoDb(opCtx, getNss().dbName(), MODE_X); if (!autoDb.getDb()) { uasserted(ErrorCodes::ConflictingOperationInProgress, @@ -273,7 +273,7 @@ Status MovePrimarySourceManager::commitOnConfig(OperationContext* opCtx) { // this node can accept writes for this collection as a proxy for it being primary. if (!validateStatus.isOK()) { UninterruptibleLockGuard noInterrupt(opCtx->lockState()); - AutoGetDb autoDb(opCtx, getNss().toString(), MODE_IX); + AutoGetDb autoDb(opCtx, getNss().dbName(), MODE_IX); if (!autoDb.getDb()) { uasserted(ErrorCodes::ConflictingOperationInProgress, @@ -443,7 +443,7 @@ void MovePrimarySourceManager::_cleanup(OperationContext* opCtx) { { // Unregister from the database's sharding state if we're still registered. UninterruptibleLockGuard noInterrupt(opCtx->lockState()); - AutoGetDb autoDb(opCtx, getNss().toString(), MODE_IX); + AutoGetDb autoDb(opCtx, getNss().dbName(), MODE_IX); auto dss = DatabaseShardingState::get(opCtx, getNss().db()); dss->clearMovePrimarySourceManager(opCtx); diff --git a/src/mongo/db/s/persistent_task_queue_test.cpp b/src/mongo/db/s/persistent_task_queue_test.cpp index 4c498940583..55f490d9a7f 100644 --- a/src/mongo/db/s/persistent_task_queue_test.cpp +++ b/src/mongo/db/s/persistent_task_queue_test.cpp @@ -83,7 +83,7 @@ void killOps(ServiceContext* serviceCtx) { class PersistentTaskQueueTest : public ShardServerTestFixture { void setUp() override { ShardServerTestFixture::setUp(); - AutoGetDb autoDb(operationContext(), kNss.db(), MODE_IX); + AutoGetDb autoDb(operationContext(), kNss.dbName(), MODE_IX); Lock::CollectionLock collLock(operationContext(), kNss, MODE_IX); CollectionShardingRuntime::get(operationContext(), kNss) ->setFilteringMetadata(operationContext(), CollectionMetadata()); diff --git a/src/mongo/db/s/range_deletion_util_test.cpp b/src/mongo/db/s/range_deletion_util_test.cpp index 8ebbf459823..43eba92c307 100644 --- a/src/mongo/db/s/range_deletion_util_test.cpp +++ b/src/mongo/db/s/range_deletion_util_test.cpp @@ -117,7 +117,7 @@ public: DatabaseVersion(UUID::gen(), Timestamp(1, 1)), makeStandaloneRoutingTableHistory(std::move(rt)), boost::none); - AutoGetDb autoDb(_opCtx, kNss.db(), MODE_IX); + AutoGetDb autoDb(_opCtx, kNss.dbName(), MODE_IX); Lock::CollectionLock collLock(_opCtx, kNss, MODE_IX); CollectionMetadata collMetadata(std::move(cm), ShardId("dummyShardId")); CollectionShardingRuntime::get(_opCtx, kNss)->setFilteringMetadata(_opCtx, collMetadata); diff --git a/src/mongo/db/s/resharding/resharding_donor_service.cpp b/src/mongo/db/s/resharding/resharding_donor_service.cpp index 95d31bda195..9bc249cd378 100644 --- a/src/mongo/db/s/resharding/resharding_donor_service.cpp +++ b/src/mongo/db/s/resharding/resharding_donor_service.cpp @@ -86,7 +86,7 @@ Timestamp generateMinFetchTimestamp(OperationContext* opCtx, const NamespaceStri // Do a no-op write and use the OpTime as the minFetchTimestamp writeConflictRetry( opCtx, "resharding donor minFetchTimestamp", NamespaceString::kRsOplogNamespace.ns(), [&] { - AutoGetDb db(opCtx, sourceNss.db(), MODE_IX); + AutoGetDb db(opCtx, sourceNss.dbName(), MODE_IX); Lock::CollectionLock collLock(opCtx, sourceNss, MODE_S); AutoGetOplog oplogWrite(opCtx, OplogAccessMode::kWrite); diff --git a/src/mongo/db/s/resharding/resharding_oplog_fetcher.cpp b/src/mongo/db/s/resharding/resharding_oplog_fetcher.cpp index ac62a1cee4d..5f84a037f4c 100644 --- a/src/mongo/db/s/resharding/resharding_oplog_fetcher.cpp +++ b/src/mongo/db/s/resharding/resharding_oplog_fetcher.cpp @@ -253,7 +253,7 @@ void ReshardingOplogFetcher::_ensureCollection(Client* client, } WriteUnitOfWork wuow(opCtx); - AutoGetDb autoDb(opCtx, nss.db(), LockMode::MODE_IX); + AutoGetDb autoDb(opCtx, nss.dbName(), LockMode::MODE_IX); Lock::CollectionLock collLock(opCtx, nss, MODE_IX); auto db = autoDb.ensureDbExists(opCtx); diff --git a/src/mongo/db/s/resharding/resharding_oplog_fetcher_test.cpp b/src/mongo/db/s/resharding/resharding_oplog_fetcher_test.cpp index ddf8e673240..9258511832d 100644 --- a/src/mongo/db/s/resharding/resharding_oplog_fetcher_test.cpp +++ b/src/mongo/db/s/resharding/resharding_oplog_fetcher_test.cpp @@ -215,7 +215,7 @@ public: void create(NamespaceString nss) { writeConflictRetry(_opCtx, "create", nss.ns(), [&] { AllowLockAcquisitionOnTimestampedUnitOfWork allowLockAcquisition(_opCtx->lockState()); - AutoGetDb autoDb(_opCtx, nss.db(), LockMode::MODE_X); + AutoGetDb autoDb(_opCtx, nss.dbName(), LockMode::MODE_X); WriteUnitOfWork wunit(_opCtx); if (_opCtx->recoveryUnit()->getCommitTimestamp().isNull()) { ASSERT_OK(_opCtx->recoveryUnit()->setTimestamp(Timestamp(1, 1))); diff --git a/src/mongo/db/s/session_catalog_migration_destination_test.cpp b/src/mongo/db/s/session_catalog_migration_destination_test.cpp index aba7b87e75c..2dc41e842ca 100644 --- a/src/mongo/db/s/session_catalog_migration_destination_test.cpp +++ b/src/mongo/db/s/session_catalog_migration_destination_test.cpp @@ -274,7 +274,7 @@ public: } void setUnshardedFilteringMetadata(const NamespaceString& nss) { - AutoGetDb autoDb(operationContext(), nss.db(), MODE_IX); + AutoGetDb autoDb(operationContext(), nss.dbName(), MODE_IX); Lock::CollectionLock collLock(operationContext(), nss, MODE_IX); CollectionShardingRuntime::get(operationContext(), nss) ->setFilteringMetadata(operationContext(), CollectionMetadata()); diff --git a/src/mongo/db/s/shard_server_op_observer.cpp b/src/mongo/db/s/shard_server_op_observer.cpp index 427208baec6..661be4e079d 100644 --- a/src/mongo/db/s/shard_server_op_observer.cpp +++ b/src/mongo/db/s/shard_server_op_observer.cpp @@ -383,6 +383,7 @@ void ShardServerOpObserver::onUpdate(OperationContext* opCtx, const OplogUpdateE // primary, blocking behind the critical section. // Extract which database was updated + // TODO SERVER-67789 Change to extract DatabaseName obj, and use when locking db below. std::string db; fassert(40478, bsonExtractStringField( @@ -395,7 +396,7 @@ void ShardServerOpObserver::onUpdate(OperationContext* opCtx, const OplogUpdateE // TODO SERVER-58223: evaluate whether this is safe or whether acquiring the lock can // block. AllowLockAcquisitionOnTimestampedUnitOfWork allowLockAcquisition(opCtx->lockState()); - AutoGetDb autoDb(opCtx, db, MODE_X); + AutoGetDb autoDb(opCtx, DatabaseName(boost::none, db), MODE_X); DatabaseHolder::get(opCtx)->clearDbInfo(opCtx, DatabaseName(boost::none, db)); } } @@ -484,6 +485,7 @@ void ShardServerOpObserver::onDelete(OperationContext* opCtx, } // Extract which database entry is being deleted from the _id field. + // TODO SERVER-67789 Change to extract DatabaseName obj, and use when locking db below. std::string deletedDatabase; fassert(50772, bsonExtractStringField( @@ -491,7 +493,7 @@ void ShardServerOpObserver::onDelete(OperationContext* opCtx, // TODO SERVER-58223: evaluate whether this is safe or whether acquiring the lock can block. AllowLockAcquisitionOnTimestampedUnitOfWork allowLockAcquisition(opCtx->lockState()); - AutoGetDb autoDb(opCtx, deletedDatabase, MODE_X); + AutoGetDb autoDb(opCtx, DatabaseName(boost::none, deletedDatabase), MODE_X); DatabaseHolder::get(opCtx)->clearDbInfo(opCtx, DatabaseName(boost::none, deletedDatabase)); } diff --git a/src/mongo/db/s/sharding_initialization_mongod.cpp b/src/mongo/db/s/sharding_initialization_mongod.cpp index 9458486f9b9..9d423f65057 100644 --- a/src/mongo/db/s/sharding_initialization_mongod.cpp +++ b/src/mongo/db/s/sharding_initialization_mongod.cpp @@ -461,7 +461,7 @@ void ShardingInitializationMongoD::updateShardIdentityConfigString( write_ops::UpdateModification::parseFromClassicUpdate(updateObj)); try { - AutoGetDb autoDb(opCtx, NamespaceString::kServerConfigurationNamespace.db(), MODE_X); + AutoGetDb autoDb(opCtx, NamespaceString::kServerConfigurationNamespace.dbName(), MODE_X); auto result = update(opCtx, autoDb.ensureDbExists(opCtx), updateReq); if (result.numMatched == 0) { diff --git a/src/mongo/db/s/split_vector_test.cpp b/src/mongo/db/s/split_vector_test.cpp index f2a63755cf5..f5588677e85 100644 --- a/src/mongo/db/s/split_vector_test.cpp +++ b/src/mongo/db/s/split_vector_test.cpp @@ -48,7 +48,7 @@ const NamespaceString kNss = NamespaceString("foo", "bar"); const std::string kPattern = "_id"; void setUnshardedFilteringMetadata(OperationContext* opCtx, const NamespaceString& nss) { - AutoGetDb autoDb(opCtx, nss.db(), MODE_IX); + AutoGetDb autoDb(opCtx, nss.dbName(), MODE_IX); Lock::CollectionLock collLock(opCtx, nss, MODE_IX); CollectionShardingRuntime::get(opCtx, nss)->setFilteringMetadata(opCtx, CollectionMetadata()); } |