summaryrefslogtreecommitdiff
path: root/src/mongo/db/s
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/db/s')
-rw-r--r--src/mongo/db/s/balancer_stats_registry.cpp6
-rw-r--r--src/mongo/db/s/database_sharding_state.cpp3
-rw-r--r--src/mongo/db/s/drop_collection_coordinator.cpp2
-rw-r--r--src/mongo/db/s/drop_database_coordinator.cpp13
-rw-r--r--src/mongo/db/s/op_observer_sharding_impl.cpp2
-rw-r--r--src/mongo/db/s/rename_collection_coordinator.cpp2
-rw-r--r--src/mongo/db/s/rename_collection_participant_service.cpp6
-rw-r--r--src/mongo/db/s/session_catalog_migration_destination.cpp2
-rw-r--r--src/mongo/db/s/shard_filtering_metadata_refresh.cpp24
-rw-r--r--src/mongo/db/s/split_chunk.cpp2
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 =