diff options
Diffstat (limited to 'src/mongo/db/s')
-rw-r--r-- | src/mongo/db/s/balancer_stats_registry.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/s/database_sharding_state.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/s/drop_collection_coordinator.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/s/drop_database_coordinator.cpp | 13 | ||||
-rw-r--r-- | src/mongo/db/s/op_observer_sharding_impl.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/s/rename_collection_coordinator.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/s/rename_collection_participant_service.cpp | 6 | ||||
-rw-r--r-- | src/mongo/db/s/session_catalog_migration_destination.cpp | 2 | ||||
-rw-r--r-- | src/mongo/db/s/shard_filtering_metadata_refresh.cpp | 24 | ||||
-rw-r--r-- | src/mongo/db/s/split_chunk.cpp | 2 |
10 files changed, 38 insertions, 24 deletions
diff --git a/src/mongo/db/s/balancer_stats_registry.cpp b/src/mongo/db/s/balancer_stats_registry.cpp index f2c6dd5945c..c2308b26d2d 100644 --- a/src/mongo/db/s/balancer_stats_registry.cpp +++ b/src/mongo/db/s/balancer_stats_registry.cpp @@ -61,14 +61,16 @@ ThreadPool::Options makeDefaultThreadPoolOptions() { } // namespace ScopedRangeDeleterLock::ScopedRangeDeleterLock(OperationContext* opCtx) - : _configLock(opCtx, NamespaceString::kConfigDb, MODE_IX), + // TODO SERVER-62491 Use system tenantId for DBLock + : _configLock(opCtx, DatabaseName(boost::none, NamespaceString::kConfigDb), MODE_IX), _rangeDeletionLock(opCtx, NamespaceString::kRangeDeletionNamespace, MODE_X) {} // Take DB and Collection lock in mode IX as well as collection UUID lock to serialize with // operations that take the above version of the ScopedRangeDeleterLock such as FCV downgrade and // BalancerStatsRegistry initialization. ScopedRangeDeleterLock::ScopedRangeDeleterLock(OperationContext* opCtx, const UUID& collectionUuid) - : _configLock(opCtx, NamespaceString::kConfigDb, MODE_IX), + // TODO SERVER-62491 Use system tenantId for DBLock + : _configLock(opCtx, DatabaseName(boost::none, NamespaceString::kConfigDb), MODE_IX), _rangeDeletionLock(opCtx, NamespaceString::kRangeDeletionNamespace, MODE_IX), _collectionUuidLock(Lock::ResourceLock( opCtx->lockState(), diff --git a/src/mongo/db/s/database_sharding_state.cpp b/src/mongo/db/s/database_sharding_state.cpp index 776b23857d0..d4eabcc197a 100644 --- a/src/mongo/db/s/database_sharding_state.cpp +++ b/src/mongo/db/s/database_sharding_state.cpp @@ -101,7 +101,8 @@ void DatabaseShardingState::checkIsPrimaryShardForDb(OperationContext* opCtx, St OperationShardingState::get(opCtx).hasDbVersion()); const auto dbPrimaryShardId = [&]() { - Lock::DBLock dbWriteLock(opCtx, dbName, MODE_IS); + // TODO SERVER-63706 Use dbName directly + Lock::DBLock dbWriteLock(opCtx, DatabaseName(boost::none, dbName), MODE_IS); auto dss = DatabaseShardingState::get(opCtx, dbName); auto dssLock = DatabaseShardingState::DSSLock::lockShared(opCtx, dss); // The following call will also ensure that the database version matches diff --git a/src/mongo/db/s/drop_collection_coordinator.cpp b/src/mongo/db/s/drop_collection_coordinator.cpp index fa1e2f4b84e..0262090f6af 100644 --- a/src/mongo/db/s/drop_collection_coordinator.cpp +++ b/src/mongo/db/s/drop_collection_coordinator.cpp @@ -51,7 +51,7 @@ DropReply DropCollectionCoordinator::dropCollectionLocally(OperationContext* opC const NamespaceString& nss) { { // Clear CollectionShardingRuntime entry - Lock::DBLock dbLock(opCtx, nss.db(), MODE_IX); + Lock::DBLock dbLock(opCtx, nss.dbName(), MODE_IX); Lock::CollectionLock collLock(opCtx, nss, MODE_IX); auto* csr = CollectionShardingRuntime::get(opCtx, nss); csr->clearFilteringMetadata(opCtx); diff --git a/src/mongo/db/s/drop_database_coordinator.cpp b/src/mongo/db/s/drop_database_coordinator.cpp index 54b8ef1108e..708f004f801 100644 --- a/src/mongo/db/s/drop_database_coordinator.cpp +++ b/src/mongo/db/s/drop_database_coordinator.cpp @@ -84,7 +84,10 @@ public: const std::string dbName, const BSONObj reason) : _opCtx(opCtx), _dbName(std::move(dbName)), _reason(std::move(reason)) { - Lock::DBLock dbLock(_opCtx, _dbName, MODE_X); + // TODO SERVER-67438 Once ScopedDatabaseCriticalSection holds a DatabaseName obj, use dbName + // directly + DatabaseName databaseName(boost::none, _dbName); + Lock::DBLock dbLock(_opCtx, databaseName, MODE_X); auto dss = DatabaseShardingState::get(_opCtx, _dbName); auto dssLock = DatabaseShardingState::DSSLock::lockExclusive(_opCtx, dss); dss->enterCriticalSectionCatchUpPhase(_opCtx, dssLock, _reason); @@ -93,7 +96,10 @@ public: ~ScopedDatabaseCriticalSection() { UninterruptibleLockGuard guard(_opCtx->lockState()); - Lock::DBLock dbLock(_opCtx, _dbName, MODE_X); + // TODO SERVER-67438 Once ScopedDatabaseCriticalSection holds a DatabaseName obj, use dbName + // directly + DatabaseName databaseName(boost::none, _dbName); + Lock::DBLock dbLock(_opCtx, databaseName, MODE_X); auto dss = DatabaseShardingState::get(_opCtx, _dbName); dss->exitCriticalSection(_opCtx, _reason); } @@ -145,7 +151,8 @@ void DropDatabaseCoordinator::_dropShardedCollection( } void DropDatabaseCoordinator::_clearDatabaseInfoOnPrimary(OperationContext* opCtx) { - Lock::DBLock dbLock(opCtx, _dbName, MODE_X); + // TODO SERVER-67438 Use _dbName directly once it's of type DatabaseName + Lock::DBLock dbLock(opCtx, DatabaseName(boost::none, _dbName), MODE_X); auto dss = DatabaseShardingState::get(opCtx, _dbName); dss->clearDatabaseInfo(opCtx); } diff --git a/src/mongo/db/s/op_observer_sharding_impl.cpp b/src/mongo/db/s/op_observer_sharding_impl.cpp index 2432902effd..096aeeca1cc 100644 --- a/src/mongo/db/s/op_observer_sharding_impl.cpp +++ b/src/mongo/db/s/op_observer_sharding_impl.cpp @@ -87,7 +87,7 @@ void assertMovePrimaryInProgress(OperationContext* opCtx, NamespaceString const& // TODO SERVER-58222: evaluate whether this is safe or whether acquiring the lock can block. AllowLockAcquisitionOnTimestampedUnitOfWork allowLockAcquisition(opCtx->lockState()); - Lock::DBLock dblock(opCtx, nss.db(), MODE_IS); + Lock::DBLock dblock(opCtx, nss.dbName(), MODE_IS); auto dss = DatabaseShardingState::get(opCtx, nss.db().toString()); if (!dss) { return; diff --git a/src/mongo/db/s/rename_collection_coordinator.cpp b/src/mongo/db/s/rename_collection_coordinator.cpp index 74b3835a0ea..b2899aa71ca 100644 --- a/src/mongo/db/s/rename_collection_coordinator.cpp +++ b/src/mongo/db/s/rename_collection_coordinator.cpp @@ -74,7 +74,7 @@ boost::optional<UUID> getCollectionUUID(OperationContext* opCtx, if (optCollectionType) { return optCollectionType->getUuid(); } - Lock::DBLock dbLock(opCtx, nss.db(), MODE_IS); + Lock::DBLock dbLock(opCtx, nss.dbName(), MODE_IS); Lock::CollectionLock collLock(opCtx, nss, MODE_IS); const auto collPtr = CollectionCatalog::get(opCtx)->lookupCollectionByNamespace(opCtx, nss); if (!collPtr && !throwOnNotFound) { diff --git a/src/mongo/db/s/rename_collection_participant_service.cpp b/src/mongo/db/s/rename_collection_participant_service.cpp index f03f8d7edd7..58ced2cc9ac 100644 --- a/src/mongo/db/s/rename_collection_participant_service.cpp +++ b/src/mongo/db/s/rename_collection_participant_service.cpp @@ -74,7 +74,7 @@ void dropCollectionLocally(OperationContext* opCtx, const NamespaceString& nss) void clearFilteringMetadata(OperationContext* opCtx, const NamespaceString& nss) { UninterruptibleLockGuard noInterrupt(opCtx->lockState()); - Lock::DBLock dbLock(opCtx, nss.db(), MODE_IX); + Lock::DBLock dbLock(opCtx, nss.dbName(), MODE_IX); Lock::CollectionLock collLock(opCtx, nss, MODE_IX); auto* csr = CollectionShardingRuntime::get(opCtx, nss); csr->clearFilteringMetadata(opCtx); @@ -90,7 +90,7 @@ void renameOrDropTarget(OperationContext* opCtx, const UUID& sourceUUID, const boost::optional<UUID>& targetUUID) { { - Lock::DBLock dbLock(opCtx, toNss.db(), MODE_IS); + Lock::DBLock dbLock(opCtx, toNss.dbName(), MODE_IS); Lock::CollectionLock collLock(opCtx, toNss, MODE_IS); const auto targetCollPtr = CollectionCatalog::get(opCtx)->lookupCollectionByNamespace(opCtx, toNss); @@ -107,7 +107,7 @@ void renameOrDropTarget(OperationContext* opCtx, } { - Lock::DBLock dbLock(opCtx, fromNss.db(), MODE_IS); + Lock::DBLock dbLock(opCtx, fromNss.dbName(), MODE_IS); Lock::CollectionLock collLock(opCtx, fromNss, MODE_IS); // ensure idempotency by checking sourceUUID const auto sourceCollPtr = diff --git a/src/mongo/db/s/session_catalog_migration_destination.cpp b/src/mongo/db/s/session_catalog_migration_destination.cpp index 614621e2ad0..d7511dee872 100644 --- a/src/mongo/db/s/session_catalog_migration_destination.cpp +++ b/src/mongo/db/s/session_catalog_migration_destination.cpp @@ -309,7 +309,7 @@ ProcessOplogResult processSessionOplog(const BSONObj& oplogBSON, // transaction table db lock to ensure the same lock ordering with normal replicated // updates to the table. Lock::DBLock lk( - opCtx, NamespaceString::kSessionTransactionsTableNamespace.db(), MODE_IX); + opCtx, NamespaceString::kSessionTransactionsTableNamespace.dbName(), MODE_IX); WriteUnitOfWork wunit(opCtx); result.oplogTime = repl::logOp(opCtx, &oplogEntry); diff --git a/src/mongo/db/s/shard_filtering_metadata_refresh.cpp b/src/mongo/db/s/shard_filtering_metadata_refresh.cpp index 4c7df87ac58..51bb630571f 100644 --- a/src/mongo/db/s/shard_filtering_metadata_refresh.cpp +++ b/src/mongo/db/s/shard_filtering_metadata_refresh.cpp @@ -71,7 +71,8 @@ void onDbVersionMismatch(OperationContext* opCtx, // TODO: It is not safe here to read the DB version without checking for critical section // if (clientDbVersion) { - Lock::DBLock dbLock(opCtx, dbName, MODE_IS); + // TODO SERVER-67440 Use dbName directly + Lock::DBLock dbLock(opCtx, DatabaseName(boost::none, dbName), MODE_IS); auto dss = DatabaseShardingState::get(opCtx, dbName); auto dssLock = DatabaseShardingState::DSSLock::lockShared(opCtx, dss); const auto serverDbVersion = dss->getDbVersion(opCtx, dssLock); @@ -157,7 +158,7 @@ SharedSemiFuture<void> recoverRefreshShardVersion(ServiceContext* serviceContext // version. It is then ok to lock views in order to clear filtering metadata. // // DBLock and CollectionLock must be used in order to avoid shard version checks - Lock::DBLock dbLock(opCtx, nss.db(), MODE_IX); + Lock::DBLock dbLock(opCtx, nss.dbName(), MODE_IX); Lock::CollectionLock collLock(opCtx, nss, MODE_IX); auto* const csr = CollectionShardingRuntime::get(opCtx, nss); @@ -190,7 +191,7 @@ SharedSemiFuture<void> recoverRefreshShardVersion(ServiceContext* serviceContext { // DBLock and CollectionLock must be used in order to avoid shard version // checks - Lock::DBLock dbLock(opCtx, nss.db(), MODE_IX); + Lock::DBLock dbLock(opCtx, nss.dbName(), MODE_IX); Lock::CollectionLock collLock(opCtx, nss, MODE_IX); auto const& csr = CollectionShardingRuntime::get(opCtx, nss); @@ -259,7 +260,7 @@ void onShardVersionMismatch(OperationContext* opCtx, { boost::optional<Lock::DBLock> dbLock; boost::optional<Lock::CollectionLock> collLock; - dbLock.emplace(opCtx, nss.db(), MODE_IS); + dbLock.emplace(opCtx, nss.dbName(), MODE_IS); collLock.emplace(opCtx, nss, MODE_IS); auto* const csr = CollectionShardingRuntime::get(opCtx, nss); @@ -380,7 +381,7 @@ ChunkVersion forceShardFilteringMetadataRefresh(OperationContext* opCtx, // DBLock and CollectionLock are used here to avoid throwing further recursive stale // config errors, as well as a possible InvalidViewDefinition error if an invalid view // is in the 'system.views' collection. - Lock::DBLock dbLock(opCtx, nss.db(), MODE_IX); + Lock::DBLock dbLock(opCtx, nss.dbName(), MODE_IX); Lock::CollectionLock collLock(opCtx, nss, MODE_IX); CollectionShardingRuntime::get(opCtx, nss) ->setFilteringMetadata(opCtx, CollectionMetadata()); @@ -394,7 +395,7 @@ ChunkVersion forceShardFilteringMetadataRefresh(OperationContext* opCtx, // DBLock and CollectionLock are used here to avoid throwing further recursive stale // config errors, as well as a possible InvalidViewDefinition error if an invalid view // is in the 'system.views' collection. - Lock::DBLock dbLock(opCtx, nss.db(), MODE_IS); + Lock::DBLock dbLock(opCtx, nss.dbName(), MODE_IS); Lock::CollectionLock collLock(opCtx, nss, MODE_IS); auto optMetadata = CollectionShardingRuntime::get(opCtx, nss)->getCurrentMetadataIfKnown(); @@ -423,7 +424,7 @@ ChunkVersion forceShardFilteringMetadataRefresh(OperationContext* opCtx, // DBLock and CollectionLock are used here to avoid throwing further recursive stale config // errors, as well as a possible InvalidViewDefinition error if an invalid view is in the // 'system.views' collection. - Lock::DBLock dbLock(opCtx, nss.db(), MODE_IX); + Lock::DBLock dbLock(opCtx, nss.dbName(), MODE_IX); Lock::CollectionLock collLock(opCtx, nss, MODE_IX); auto* const csr = CollectionShardingRuntime::get(opCtx, nss); @@ -485,7 +486,8 @@ void forceDatabaseRefresh(OperationContext* opCtx, const StringData dbName) { if (swRefreshedDbInfo == ErrorCodes::NamespaceNotFound) { // db has been dropped, set the db version to boost::none - Lock::DBLock dbLock(opCtx, dbName, MODE_X); + // TODO SERVER-67440 Use dbName directly + Lock::DBLock dbLock(opCtx, DatabaseName(boost::none, dbName), MODE_X); auto dss = DatabaseShardingState::get(opCtx, dbName); dss->clearDatabaseInfo(opCtx); return; @@ -500,7 +502,8 @@ void forceDatabaseRefresh(OperationContext* opCtx, const StringData dbName) { { // Take the DBLock directly rather than using AutoGetDb, to prevent a recursive call // into checkDbVersion(). - Lock::DBLock dbLock(opCtx, dbName, MODE_IS); + // TODO SERVER-67440 Use dbName directly + Lock::DBLock dbLock(opCtx, DatabaseName(boost::none, dbName), MODE_IS); auto dss = DatabaseShardingState::get(opCtx, dbName); auto dssLock = DatabaseShardingState::DSSLock::lockShared(opCtx, dss); @@ -518,7 +521,8 @@ void forceDatabaseRefresh(OperationContext* opCtx, const StringData dbName) { } // The cached version is older than the refreshed version; update the cached version. - Lock::DBLock dbLock(opCtx, dbName, MODE_X); + // TODO SERVER-67440 Use dbName directly + Lock::DBLock dbLock(opCtx, DatabaseName(boost::none, dbName), MODE_X); auto dss = DatabaseShardingState::get(opCtx, dbName); auto dssLock = DatabaseShardingState::DSSLock::lockExclusive(opCtx, dss); diff --git a/src/mongo/db/s/split_chunk.cpp b/src/mongo/db/s/split_chunk.cpp index 964871d3740..7b9067e7902 100644 --- a/src/mongo/db/s/split_chunk.cpp +++ b/src/mongo/db/s/split_chunk.cpp @@ -100,7 +100,7 @@ bool checkMetadataForSuccessfulSplitChunk(OperationContext* opCtx, const ChunkRange& chunkRange, const std::vector<BSONObj>& splitPoints) { // DBLock and CollectionLock must be used in order to avoid shard version checks - Lock::DBLock dbLock(opCtx, nss.db(), MODE_IS); + Lock::DBLock dbLock(opCtx, nss.dbName(), MODE_IS); Lock::CollectionLock collLock(opCtx, nss, MODE_IS); const auto metadataAfterSplit = |