diff options
Diffstat (limited to 'src/mongo/db/s')
-rw-r--r-- | src/mongo/db/s/SConscript | 3 | ||||
-rw-r--r-- | src/mongo/db/s/database_sharding_state.cpp | 88 | ||||
-rw-r--r-- | src/mongo/db/s/database_sharding_state.h | 48 | ||||
-rw-r--r-- | src/mongo/db/s/database_sharding_state_test.cpp | 9 | ||||
-rw-r--r-- | src/mongo/db/s/drop_database_coordinator.cpp | 9 | ||||
-rw-r--r-- | src/mongo/db/s/drop_database_coordinator.h | 2 | ||||
-rw-r--r-- | src/mongo/db/s/get_database_version_command.cpp | 7 | ||||
-rw-r--r-- | src/mongo/db/s/move_primary_source_manager.cpp | 8 | ||||
-rw-r--r-- | src/mongo/db/s/shard_filtering_metadata_refresh.cpp | 18 | ||||
-rw-r--r-- | src/mongo/db/s/shard_server_op_observer.cpp | 7 | ||||
-rw-r--r-- | src/mongo/db/s/sharding_ddl_coordinator.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/s/sharding_ddl_coordinator_service.cpp | 3 | ||||
-rw-r--r-- | src/mongo/db/s/shardsvr_drop_indexes_command.cpp | 3 |
13 files changed, 32 insertions, 176 deletions
diff --git a/src/mongo/db/s/SConscript b/src/mongo/db/s/SConscript index c8fbd314d87..6d0c008243d 100644 --- a/src/mongo/db/s/SConscript +++ b/src/mongo/db/s/SConscript @@ -171,6 +171,7 @@ env.Library( '$BUILD_DIR/mongo/crypto/encrypted_field_config', '$BUILD_DIR/mongo/crypto/fle_crypto', '$BUILD_DIR/mongo/db/catalog/catalog_helpers', + '$BUILD_DIR/mongo/db/catalog/database_holder', '$BUILD_DIR/mongo/db/index_builds_coordinator_interface', '$BUILD_DIR/mongo/db/ops/write_ops', '$BUILD_DIR/mongo/db/repl/image_collection_entry', @@ -450,6 +451,7 @@ env.Library( LIBDEPS_PRIVATE=[ '$BUILD_DIR/mongo/db/bson/dotted_path_support', '$BUILD_DIR/mongo/db/catalog/catalog_helpers', + '$BUILD_DIR/mongo/db/catalog/database_holder', '$BUILD_DIR/mongo/db/cloner', '$BUILD_DIR/mongo/db/commands/cluster_server_parameter_commands_invocation', '$BUILD_DIR/mongo/db/commands/core', @@ -617,6 +619,7 @@ env.CppUnitTest( '$BUILD_DIR/mongo/db/auth/authmocks', '$BUILD_DIR/mongo/db/catalog/catalog_helpers', '$BUILD_DIR/mongo/db/catalog/catalog_test_fixture', + '$BUILD_DIR/mongo/db/catalog/database_holder', '$BUILD_DIR/mongo/db/commands/server_status', '$BUILD_DIR/mongo/db/exec/document_value/document_value_test_util', '$BUILD_DIR/mongo/db/keys_collection_client_direct', diff --git a/src/mongo/db/s/database_sharding_state.cpp b/src/mongo/db/s/database_sharding_state.cpp index d4eabcc197a..fe77d844162 100644 --- a/src/mongo/db/s/database_sharding_state.cpp +++ b/src/mongo/db/s/database_sharding_state.cpp @@ -93,30 +93,6 @@ DatabaseShardingState* DatabaseShardingState::get(OperationContext* opCtx, return databasesMap.getOrCreate(dbName).get(); } -void DatabaseShardingState::checkIsPrimaryShardForDb(OperationContext* opCtx, StringData dbName) { - invariant(dbName != NamespaceString::kConfigDb); - - uassert(ErrorCodes::IllegalOperation, - "Request sent without attaching database version", - OperationShardingState::get(opCtx).hasDbVersion()); - - const auto dbPrimaryShardId = [&]() { - // 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 - return dss->getDatabaseInfo(opCtx, dssLock).getPrimary(); - }(); - - const auto thisShardId = ShardingState::get(opCtx)->shardId(); - - uassert(ErrorCodes::IllegalOperation, - str::stream() << "This is not the primary shard for db " << dbName - << " expected: " << dbPrimaryShardId << " shardId: " << thisShardId, - dbPrimaryShardId == thisShardId); -} - std::shared_ptr<DatabaseShardingState> DatabaseShardingState::getSharedForLockFreeReads( OperationContext* opCtx, const StringData dbName) { auto& databasesMap = DatabaseShardingStateMap::get(opCtx->getServiceContext()); @@ -142,70 +118,6 @@ void DatabaseShardingState::exitCriticalSection(OperationContext* opCtx, const B _critSec.exitCriticalSection(reason); } -DatabaseType DatabaseShardingState::getDatabaseInfo(OperationContext* opCtx, - DSSLock& dssLock) const { - checkDbVersion(opCtx, dssLock); - invariant(_optDatabaseInfo); - return _optDatabaseInfo.get(); -} - -boost::optional<DatabaseVersion> DatabaseShardingState::getDbVersion(OperationContext* opCtx, - DSSLock&) const { - if (!opCtx->lockState()->isDbLockedForMode(_dbName, MODE_X)) { - invariant(opCtx->lockState()->isDbLockedForMode(_dbName, MODE_IS)); - } - return (_optDatabaseInfo) ? boost::optional<DatabaseVersion>(_optDatabaseInfo->getVersion()) - : boost::none; -} - -void DatabaseShardingState::clearDatabaseInfo(OperationContext* opCtx) { - LOGV2(5369110, "Clearing node's cached database info", "db"_attr = _dbName); - const auto dssLock = DSSLock::lockExclusive(opCtx, this); - _optDatabaseInfo = boost::none; -} - -void DatabaseShardingState::setDatabaseInfo(OperationContext* opCtx, - DatabaseType&& newDatabaseInfo, - DSSLock& dssLock) { - invariant(opCtx->lockState()->isDbLockedForMode(_dbName, MODE_X)); - LOGV2(5369111, - "Setting this node's cached database info", - "db"_attr = _dbName, - "newDatabaseVersion"_attr = newDatabaseInfo.getVersion()); - _optDatabaseInfo.emplace(std::move(newDatabaseInfo)); -} - -void DatabaseShardingState::checkDbVersion(OperationContext* opCtx, DSSLock&) const { - invariant(opCtx->lockState()->isLocked()); - - const auto clientDbVersion = OperationShardingState::get(opCtx).getDbVersion(_dbName); - if (!clientDbVersion) - return; - - { - auto criticalSectionSignal = _critSec.getSignal( - opCtx->lockState()->isWriteLocked() ? ShardingMigrationCriticalSection::kWrite - : ShardingMigrationCriticalSection::kRead); - const std::string reason = - _critSec.getReason() ? _critSec.getReason()->toString() : "unknown"; - uassert( - StaleDbRoutingVersion(_dbName, *clientDbVersion, boost::none, criticalSectionSignal), - str::stream() << "The critical section for " << _dbName - << " is acquired with reason: " << reason, - !criticalSectionSignal); - } - - uassert(StaleDbRoutingVersion(_dbName, *clientDbVersion, boost::none), - str::stream() << "sharding status of database " << _dbName - << " is not currently known and needs to be recovered", - _optDatabaseInfo); - - const auto& dbVersion = _optDatabaseInfo->getVersion(); - uassert(StaleDbRoutingVersion(_dbName, *clientDbVersion, dbVersion), - str::stream() << "dbVersion mismatch for database " << _dbName, - *clientDbVersion == dbVersion); -} - MovePrimarySourceManager* DatabaseShardingState::getMovePrimarySourceManager(DSSLock&) { return _sourceMgr; } diff --git a/src/mongo/db/s/database_sharding_state.h b/src/mongo/db/s/database_sharding_state.h index 4a263405c2b..a703acb4ce2 100644 --- a/src/mongo/db/s/database_sharding_state.h +++ b/src/mongo/db/s/database_sharding_state.h @@ -74,16 +74,6 @@ public: StringData dbName); /** - * Checks if this shard is the primary shard for the given DB. - * - * Throws an IllegalOperation exception otherwise. - * - * Assumes the operation context has a DB version attached to it for the given @dbName. - */ - static void checkIsPrimaryShardForDb(OperationContext* opCtx, StringData dbName); - - - /** * Methods to control the databases's critical section. Must be called with the database X lock * held. */ @@ -95,38 +85,9 @@ public: return _critSec.getSignal(op); } - /** - * Returns this shard server's cached dbVersion, if one is cached. - * - * Invariants that the caller holds the DBLock in X or IS. - */ - boost::optional<DatabaseVersion> getDbVersion(OperationContext* opCtx, DSSLock&) const; - - /** - * Sets this shard server's cached database info. - * - * Invariants that the caller holds the DBLock in X mode. - */ - void setDatabaseInfo(OperationContext* opCtx, DatabaseType&& newDatabaseInfo, DSSLock&); - - /** - * Resets this shard server's cached database info. - */ - void clearDatabaseInfo(OperationContext* opCtx); - - /** - * Returns this shard server's cached database info. - * Internally performs the same checks of checkDbVersion(), - * so it will throws for the same reasons. - */ - DatabaseType getDatabaseInfo(OperationContext* opCtx, DSSLock&) const; - - /** - * If _critSecSignal is non-null, always throws StaleDbVersion. - * Otherwise, if there is a client dbVersion on the OperationContext, compares it with this - * shard server's cached dbVersion and throws StaleDbVersion if they do not match. - */ - void checkDbVersion(OperationContext* opCtx, DSSLock&) const; + auto getCriticalSectionReason(DSSLock&) const { + return _critSec.getReason() ? _critSec.getReason()->toString() : "Unknown"; + } /** * Returns the active movePrimary source manager, if one is available. @@ -164,9 +125,6 @@ private: ShardingMigrationCriticalSection _critSec; - // This shard server's cached database info. If boost::none - boost::optional<DatabaseType> _optDatabaseInfo; - // If this database is serving as a source shard for a movePrimary, the source manager will be // non-null. To write this value, there needs to be X-lock on the database in order to // synchronize with other callers which will read the source manager. diff --git a/src/mongo/db/s/database_sharding_state_test.cpp b/src/mongo/db/s/database_sharding_state_test.cpp index 81d5218dbd4..a0848154f53 100644 --- a/src/mongo/db/s/database_sharding_state_test.cpp +++ b/src/mongo/db/s/database_sharding_state_test.cpp @@ -30,6 +30,7 @@ #include "mongo/platform/basic.h" #include "boost/optional/optional_io.hpp" +#include "mongo/db/catalog/database_holder.h" #include "mongo/db/catalog_raii.h" #include "mongo/db/db_raii.h" #include "mongo/db/repl/wait_for_majority_service.h" @@ -137,9 +138,7 @@ TEST_F(DatabaseShardingStateTestWithMockedLoader, OnDbVersionMismatch) { auto getActiveDbVersion = [&] { AutoGetDb autoDb(opCtx, kDbName, MODE_IS); - const auto dss = DatabaseShardingState::get(opCtx, kDbName); - auto dssLock = DatabaseShardingState::DSSLock::lockShared(opCtx, dss); - return dss->getDbVersion(opCtx, dssLock); + return DatabaseHolder::get(opCtx)->getDbVersion(opCtx, kDbName); }; _mockCatalogCacheLoader->setDatabaseRefreshReturnValue(newDb); @@ -172,9 +171,7 @@ TEST_F(DatabaseShardingStateTestWithMockedLoader, ForceDatabaseRefresh) { boost::optional<DatabaseVersion> activeDbVersion = [&] { AutoGetDb autoDb(opCtx, kDbName, MODE_IS); - const auto dss = DatabaseShardingState::get(opCtx, kDbName); - auto dssLock = DatabaseShardingState::DSSLock::lockShared(opCtx, dss); - return dss->getDbVersion(opCtx, dssLock); + return DatabaseHolder::get(opCtx)->getDbVersion(opCtx, kDbName); }(); ASSERT_TRUE(activeDbVersion); if (expectRefresh) { diff --git a/src/mongo/db/s/drop_database_coordinator.cpp b/src/mongo/db/s/drop_database_coordinator.cpp index 708f004f801..a6676e133b4 100644 --- a/src/mongo/db/s/drop_database_coordinator.cpp +++ b/src/mongo/db/s/drop_database_coordinator.cpp @@ -31,6 +31,7 @@ #include "mongo/db/s/drop_database_coordinator.h" #include "mongo/db/api_parameters.h" +#include "mongo/db/catalog/database_holder.h" #include "mongo/db/persistent_task_store.h" #include "mongo/db/s/database_sharding_state.h" #include "mongo/db/s/shard_metadata_util.h" @@ -150,13 +151,6 @@ void DropDatabaseCoordinator::_dropShardedCollection( opCtx, nss, {primaryShardId}, **executor, getCurrentSession()); } -void DropDatabaseCoordinator::_clearDatabaseInfoOnPrimary(OperationContext* opCtx) { - // 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); -} - void DropDatabaseCoordinator::_clearDatabaseInfoOnSecondaries(OperationContext* opCtx) { Status signalStatus = shardmetadatautil::updateShardDatabasesEntry( opCtx, @@ -297,7 +291,6 @@ ExecutorFuture<void> DropDatabaseCoordinator::_runImpl( // Clear the database sharding state info before exiting the critical section so // that all subsequent write operations with the old database version will fail // due to StaleDbVersion. - _clearDatabaseInfoOnPrimary(opCtx); _clearDatabaseInfoOnSecondaries(opCtx); removeDatabaseMetadataFromConfig( diff --git a/src/mongo/db/s/drop_database_coordinator.h b/src/mongo/db/s/drop_database_coordinator.h index 1d5cf77e028..72f2e7647ef 100644 --- a/src/mongo/db/s/drop_database_coordinator.h +++ b/src/mongo/db/s/drop_database_coordinator.h @@ -61,8 +61,6 @@ private: const CollectionType& coll, std::shared_ptr<executor::ScopedTaskExecutor> executor); - void _clearDatabaseInfoOnPrimary(OperationContext* opCtx); - void _clearDatabaseInfoOnSecondaries(OperationContext* opCtx); StringData _dbName; diff --git a/src/mongo/db/s/get_database_version_command.cpp b/src/mongo/db/s/get_database_version_command.cpp index 04b48d16dd4..2b5ebd0ff2a 100644 --- a/src/mongo/db/s/get_database_version_command.cpp +++ b/src/mongo/db/s/get_database_version_command.cpp @@ -34,6 +34,7 @@ #include "mongo/db/auth/action_type.h" #include "mongo/db/auth/authorization_session.h" #include "mongo/db/auth/privilege.h" +#include "mongo/db/catalog/database_holder.h" #include "mongo/db/catalog_raii.h" #include "mongo/db/commands.h" #include "mongo/db/s/database_sharding_state.h" @@ -81,10 +82,8 @@ public: BSONObj versionObj; AutoGetDb autoDb(opCtx, _targetDb(), MODE_IS); - const auto dss = DatabaseShardingState::get(opCtx, _targetDb()); - auto dssLock = DatabaseShardingState::DSSLock::lockShared(opCtx, dss); - - if (auto dbVersion = dss->getDbVersion(opCtx, dssLock)) { + if (const auto dbVersion = + DatabaseHolder::get(opCtx)->getDbVersion(opCtx, _targetDb())) { versionObj = dbVersion->toBSON(); } result->getBodyBuilder().append("dbVersion", versionObj); diff --git a/src/mongo/db/s/move_primary_source_manager.cpp b/src/mongo/db/s/move_primary_source_manager.cpp index aaca2f82bbb..11b8390f55a 100644 --- a/src/mongo/db/s/move_primary_source_manager.cpp +++ b/src/mongo/db/s/move_primary_source_manager.cpp @@ -30,6 +30,7 @@ #include "mongo/db/s/move_primary_source_manager.h" #include "mongo/client/connpool.h" +#include "mongo/db/catalog/database_holder.h" #include "mongo/db/catalog_raii.h" #include "mongo/db/commands.h" #include "mongo/db/dbdirectclient.h" @@ -281,8 +282,8 @@ Status MovePrimarySourceManager::commitOnConfig(OperationContext* opCtx) { } if (!repl::ReplicationCoordinator::get(opCtx)->canAcceptWritesFor(opCtx, getNss())) { - auto dss = DatabaseShardingState::get(opCtx, getNss().db()); - dss->clearDatabaseInfo(opCtx); + DatabaseHolder::get(opCtx)->clearDbInfo( + opCtx, DatabaseName(boost::none, getNss().toString())); uassertStatusOK(validateStatus.withContext( str::stream() << "Unable to verify movePrimary commit for database: " << getNss().ns() @@ -446,7 +447,8 @@ void MovePrimarySourceManager::_cleanup(OperationContext* opCtx) { auto dss = DatabaseShardingState::get(opCtx, getNss().db()); dss->clearMovePrimarySourceManager(opCtx); - dss->clearDatabaseInfo(opCtx); + DatabaseHolder::get(opCtx)->clearDbInfo(opCtx, + DatabaseName(boost::none, getNss().toString())); // Leave the critical section if we're still registered. dss->exitCriticalSection(opCtx, _critSecReason); } diff --git a/src/mongo/db/s/shard_filtering_metadata_refresh.cpp b/src/mongo/db/s/shard_filtering_metadata_refresh.cpp index 60046674966..0895d38bd84 100644 --- a/src/mongo/db/s/shard_filtering_metadata_refresh.cpp +++ b/src/mongo/db/s/shard_filtering_metadata_refresh.cpp @@ -79,9 +79,7 @@ void onDbVersionMismatch(OperationContext* opCtx, if (clientDbVersion) { // 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); + const auto serverDbVersion = DatabaseHolder::get(opCtx)->getDbVersion(opCtx, dbName); if (clientDbVersion <= serverDbVersion) { // The client was stale return; @@ -498,8 +496,7 @@ void forceDatabaseRefresh(OperationContext* opCtx, const StringData dbName) { // db has been dropped, set the db version to boost::none // 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); + DatabaseHolder::get(opCtx)->clearDbInfo(opCtx, dbName); return; } @@ -514,10 +511,7 @@ void forceDatabaseRefresh(OperationContext* opCtx, const StringData dbName) { // into checkDbVersion(). // 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 cachedDbVersion = dss->getDbVersion(opCtx, dssLock); + const auto cachedDbVersion = DatabaseHolder::get(opCtx)->getDbVersion(opCtx, dbName); if (cachedDbVersion && *cachedDbVersion >= refreshedDBVersion) { LOGV2_DEBUG(5369130, 2, @@ -533,10 +527,8 @@ void forceDatabaseRefresh(OperationContext* opCtx, const StringData dbName) { // The cached version is older than the refreshed version; update the cached version. // 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); - - dss->setDatabaseInfo(opCtx, DatabaseType(*refreshedDbInfo), dssLock); + DatabaseHolder::get(opCtx)->openDb(opCtx, dbName); + DatabaseHolder::get(opCtx)->setDbInfo(opCtx, dbName, *refreshedDbInfo); } } // namespace mongo diff --git a/src/mongo/db/s/shard_server_op_observer.cpp b/src/mongo/db/s/shard_server_op_observer.cpp index 4f853ddf78b..b0e82c3e738 100644 --- a/src/mongo/db/s/shard_server_op_observer.cpp +++ b/src/mongo/db/s/shard_server_op_observer.cpp @@ -33,6 +33,7 @@ #include "mongo/db/s/shard_server_op_observer.h" #include "mongo/bson/util/bson_extract.h" +#include "mongo/db/catalog/database_holder_impl.h" #include "mongo/db/catalog_raii.h" #include "mongo/db/op_observer_impl.h" #include "mongo/db/s/balancer_stats_registry.h" @@ -395,8 +396,7 @@ void ShardServerOpObserver::onUpdate(OperationContext* opCtx, const OplogUpdateE // block. AllowLockAcquisitionOnTimestampedUnitOfWork allowLockAcquisition(opCtx->lockState()); AutoGetDb autoDb(opCtx, db, MODE_X); - auto dss = DatabaseShardingState::get(opCtx, db); - dss->clearDatabaseInfo(opCtx); + DatabaseHolder::get(opCtx)->clearDbInfo(opCtx, DatabaseName(boost::none, db)); } } @@ -492,8 +492,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); - auto dss = DatabaseShardingState::get(opCtx, deletedDatabase); - dss->clearDatabaseInfo(opCtx); + DatabaseHolder::get(opCtx)->clearDbInfo(opCtx, DatabaseName(boost::none, deletedDatabase)); } if (nss == NamespaceString::kServerConfigurationNamespace) { diff --git a/src/mongo/db/s/sharding_ddl_coordinator.cpp b/src/mongo/db/s/sharding_ddl_coordinator.cpp index 4b556f55231..e5441b7e2ec 100644 --- a/src/mongo/db/s/sharding_ddl_coordinator.cpp +++ b/src/mongo/db/s/sharding_ddl_coordinator.cpp @@ -32,6 +32,7 @@ #include "mongo/db/s/sharding_ddl_coordinator.h" +#include "mongo/db/catalog/catalog_helper.h" #include "mongo/db/dbdirectclient.h" #include "mongo/db/logical_session_id_helpers.h" #include "mongo/db/repl/repl_client_info.h" @@ -270,7 +271,7 @@ SemiFuture<void> ShardingDDLCoordinator::run(std::shared_ptr<executor::ScopedTas metadata().getDatabaseVersion() /* databaseVersion */); // Check under the dbLock if this is still the primary shard for the database - DatabaseShardingState::checkIsPrimaryShardForDb(opCtx, originalNss().db()); + catalog_helper::assertIsPrimaryShardForDb(opCtx, originalNss().db()); }; }) .then([this, executor, token, anchor = shared_from_this()] { diff --git a/src/mongo/db/s/sharding_ddl_coordinator_service.cpp b/src/mongo/db/s/sharding_ddl_coordinator_service.cpp index 42bf4aced00..101846166a0 100644 --- a/src/mongo/db/s/sharding_ddl_coordinator_service.cpp +++ b/src/mongo/db/s/sharding_ddl_coordinator_service.cpp @@ -33,6 +33,7 @@ #include "mongo/db/s/sharding_ddl_coordinator_service.h" #include "mongo/base/checked_cast.h" +#include "mongo/db/catalog/catalog_helper.h" #include "mongo/db/dbdirectclient.h" #include "mongo/db/pipeline/aggregate_command_gen.h" #include "mongo/db/pipeline/document_source_count.h" @@ -264,7 +265,7 @@ ShardingDDLCoordinatorService::getOrCreateInstance(OperationContext* opCtx, BSON uassert(ErrorCodes::IllegalOperation, "Request sent without attaching database version", clientDbVersion); - DatabaseShardingState::checkIsPrimaryShardForDb(opCtx, nss.db()); + catalog_helper::assertIsPrimaryShardForDb(opCtx, nss.db()); coorMetadata.setDatabaseVersion(clientDbVersion); } diff --git a/src/mongo/db/s/shardsvr_drop_indexes_command.cpp b/src/mongo/db/s/shardsvr_drop_indexes_command.cpp index acbb42422b9..2fe7075be30 100644 --- a/src/mongo/db/s/shardsvr_drop_indexes_command.cpp +++ b/src/mongo/db/s/shardsvr_drop_indexes_command.cpp @@ -29,6 +29,7 @@ #include "mongo/db/auth/authorization_session.h" +#include "mongo/db/catalog/catalog_helper.h" #include "mongo/db/catalog/collection_catalog.h" #include "mongo/db/commands.h" #include "mongo/db/curop.h" @@ -159,7 +160,7 @@ ShardsvrDropIndexesCommand::Invocation::Response ShardsvrDropIndexesCommand::Inv auto dbLocalLock = distLockManager->lockDirectLocally(opCtx, ns().db(), lockTimeout); // Check under the dbLock if this is still the primary shard for the database - DatabaseShardingState::checkIsPrimaryShardForDb(opCtx, ns().db()); + catalog_helper::assertIsPrimaryShardForDb(opCtx, ns().db()); auto resolvedNs = ns(); auto dropIdxBSON = dropIdxCmd.toBSON({}); |