diff options
Diffstat (limited to 'src/mongo/db')
32 files changed, 52 insertions, 378 deletions
diff --git a/src/mongo/db/auth/authz_manager_external_state_s.cpp b/src/mongo/db/auth/authz_manager_external_state_s.cpp index 2fb91f5b8ea..53700bb9ac9 100644 --- a/src/mongo/db/auth/authz_manager_external_state_s.cpp +++ b/src/mongo/db/auth/authz_manager_external_state_s.cpp @@ -44,14 +44,12 @@ #include "mongo/db/jsobj.h" #include "mongo/db/operation_context.h" #include "mongo/rpc/get_status_from_command_result.h" -#include "mongo/s/catalog/sharding_catalog_client.h" #include "mongo/s/grid.h" #include "mongo/stdx/memory.h" #include "mongo/util/mongoutils/str.h" #include "mongo/util/stringutils.h" namespace mongo { - namespace { /** diff --git a/src/mongo/db/auth/user_cache_invalidator_job.cpp b/src/mongo/db/auth/user_cache_invalidator_job.cpp index 81602d77a14..8d6a690f19e 100644 --- a/src/mongo/db/auth/user_cache_invalidator_job.cpp +++ b/src/mongo/db/auth/user_cache_invalidator_job.cpp @@ -41,7 +41,6 @@ #include "mongo/db/commands.h" #include "mongo/db/server_parameters.h" #include "mongo/rpc/get_status_from_command_result.h" -#include "mongo/s/catalog/sharding_catalog_client.h" #include "mongo/s/grid.h" #include "mongo/stdx/mutex.h" #include "mongo/util/background.h" diff --git a/src/mongo/db/catalog/collection_catalog_entry.h b/src/mongo/db/catalog/collection_catalog_entry.h index 805bd130c46..ca07d2b17bc 100644 --- a/src/mongo/db/catalog/collection_catalog_entry.h +++ b/src/mongo/db/catalog/collection_catalog_entry.h @@ -40,6 +40,7 @@ namespace mongo { +class Collection; class IndexDescriptor; class OperationContext; diff --git a/src/mongo/db/commands.h b/src/mongo/db/commands.h index 7986cc6fe08..48cce22e3a6 100644 --- a/src/mongo/db/commands.h +++ b/src/mongo/db/commands.h @@ -41,6 +41,7 @@ #include "mongo/db/commands/server_status_metric.h" #include "mongo/db/jsobj.h" #include "mongo/db/query/explain.h" +#include "mongo/db/repl/read_concern_args.h" #include "mongo/db/write_concern.h" #include "mongo/rpc/reply_builder_interface.h" #include "mongo/stdx/functional.h" diff --git a/src/mongo/db/db.cpp b/src/mongo/db/db.cpp index 14c628b5d35..19ffd88d700 100644 --- a/src/mongo/db/db.cpp +++ b/src/mongo/db/db.cpp @@ -110,7 +110,6 @@ #include "mongo/db/s/sharding_initialization_mongod.h" #include "mongo/db/s/sharding_state.h" #include "mongo/db/s/sharding_state_recovery.h" -#include "mongo/db/s/type_shard_identity.h" #include "mongo/db/server_options.h" #include "mongo/db/server_parameters.h" #include "mongo/db/service_context.h" diff --git a/src/mongo/db/index/index_descriptor.h b/src/mongo/db/index/index_descriptor.h index 5ba231f7664..3fae7128915 100644 --- a/src/mongo/db/index/index_descriptor.h +++ b/src/mongo/db/index/index_descriptor.h @@ -45,6 +45,7 @@ class Collection; class IndexCatalog; class IndexCatalogEntry; class IndexCatalogEntryContainer; +class OperationContext; /** * A cache of information computed from the memory-mapped per-index data (OnDiskIndexData). diff --git a/src/mongo/db/index/sort_key_generator_test.cpp b/src/mongo/db/index/sort_key_generator_test.cpp index 854bb912f6e..f541919836d 100644 --- a/src/mongo/db/index/sort_key_generator_test.cpp +++ b/src/mongo/db/index/sort_key_generator_test.cpp @@ -28,8 +28,8 @@ #include "mongo/platform/basic.h" +#include "mongo/bson/json.h" #include "mongo/db/index/sort_key_generator.h" - #include "mongo/db/query/collation/collator_interface_mock.h" #include "mongo/stdx/memory.h" #include "mongo/unittest/death_test.h" diff --git a/src/mongo/db/keys_collection_client.h b/src/mongo/db/keys_collection_client.h index 4e93343ff3f..44cd5e2dd0b 100644 --- a/src/mongo/db/keys_collection_client.h +++ b/src/mongo/db/keys_collection_client.h @@ -28,17 +28,17 @@ #pragma once -#include <memory> -#include <string> +#include <vector> -#include "mongo/base/status.h" +#include "mongo/base/status_with.h" +#include "mongo/base/string_data.h" #include "mongo/db/keys_collection_document.h" namespace mongo { -class OperationContext; -class LogicalTime; class BSONObj; +class LogicalTime; +class OperationContext; class KeysCollectionClient { public: diff --git a/src/mongo/db/keys_collection_client_direct.cpp b/src/mongo/db/keys_collection_client_direct.cpp index 4148b589bab..8ffc75f29ef 100644 --- a/src/mongo/db/keys_collection_client_direct.cpp +++ b/src/mongo/db/keys_collection_client_direct.cpp @@ -30,11 +30,11 @@ #include "mongo/platform/basic.h" +#include "mongo/db/keys_collection_client_direct.h" + #include <boost/optional.hpp> #include <vector> -#include "mongo/db/keys_collection_client_direct.h" - #include "mongo/bson/bsonobjbuilder.h" #include "mongo/bson/util/bson_extract.h" #include "mongo/client/read_preference.h" @@ -43,7 +43,6 @@ #include "mongo/db/logical_clock.h" #include "mongo/db/logical_time.h" #include "mongo/db/operation_context.h" -#include "mongo/db/server_options.h" #include "mongo/db/service_context.h" #include "mongo/rpc/get_status_from_command_result.h" #include "mongo/s/catalog/sharding_catalog_client.h" @@ -52,8 +51,8 @@ #include "mongo/util/log.h" namespace mongo { - namespace { + const int kOnErrorNumRetries = 3; bool isRetriableError(ErrorCodes::Error code, Shard::RetryPolicy options) { @@ -68,7 +67,8 @@ bool isRetriableError(ErrorCodes::Error code, Shard::RetryPolicy options) { return false; } } -} + +} // namespace KeysCollectionClientDirect::KeysCollectionClientDirect() : _rsLocalClient() {} @@ -165,4 +165,5 @@ Status KeysCollectionClientDirect::insertNewKey(OperationContext* opCtx, const B return _insert( opCtx, KeysCollectionDocument::ConfigNS, doc, ShardingCatalogClient::kMajorityWriteConcern); } + } // namespace mongo diff --git a/src/mongo/db/keys_collection_client_sharded.cpp b/src/mongo/db/keys_collection_client_sharded.cpp index 2f5bb8d6c9c..4b2cb51ce24 100644 --- a/src/mongo/db/keys_collection_client_sharded.cpp +++ b/src/mongo/db/keys_collection_client_sharded.cpp @@ -29,12 +29,11 @@ #include "mongo/platform/basic.h" #include "mongo/db/keys_collection_client_sharded.h" + #include "mongo/s/catalog/sharding_catalog_client.h" namespace mongo { -namespace {} // namespace - KeysCollectionClientSharded::KeysCollectionClientSharded(ShardingCatalogClient* client) : _catalogClient(client) {} @@ -50,4 +49,5 @@ Status KeysCollectionClientSharded::insertNewKey(OperationContext* opCtx, const return _catalogClient->insertConfigDocument( opCtx, KeysCollectionDocument::ConfigNS, doc, ShardingCatalogClient::kMajorityWriteConcern); } + } // namespace mongo diff --git a/src/mongo/db/keys_collection_client_sharded.h b/src/mongo/db/keys_collection_client_sharded.h index 2ced14f2135..b3f337e60ff 100644 --- a/src/mongo/db/keys_collection_client_sharded.h +++ b/src/mongo/db/keys_collection_client_sharded.h @@ -28,22 +28,16 @@ #pragma once -#include <memory> -#include <string> - -#include "mongo/base/status.h" #include "mongo/db/keys_collection_client.h" namespace mongo { -class OperationContext; -class LogicalTime; -class BSONObj; class ShardingCatalogClient; class KeysCollectionClientSharded : public KeysCollectionClient { public: KeysCollectionClientSharded(ShardingCatalogClient*); + /** * Returns keys for the given purpose and with an expiresAt value greater than newerThanThis. */ @@ -62,4 +56,5 @@ public: private: ShardingCatalogClient* const _catalogClient; }; + } // namespace mongo diff --git a/src/mongo/db/mongod_options.cpp b/src/mongo/db/mongod_options.cpp index 67b8b63545e..f77dce0fcc5 100644 --- a/src/mongo/db/mongod_options.cpp +++ b/src/mongo/db/mongod_options.cpp @@ -44,7 +44,6 @@ #include "mongo/db/server_options.h" #include "mongo/db/server_options_helpers.h" #include "mongo/db/storage/mmap_v1/mmap_v1_options.h" -#include "mongo/s/catalog/sharding_catalog_client.h" #include "mongo/util/log.h" #include "mongo/util/mongoutils/str.h" #include "mongo/util/net/ssl_options.h" @@ -56,8 +55,6 @@ namespace mongo { using std::cout; using std::endl; -using std::string; - MongodGlobalParams mongodGlobalParams; @@ -640,7 +637,7 @@ Status validateMongodOptions(const moe::Environment& params) { #ifdef _WIN32 if (params.count("install") || params.count("reinstall")) { if (params.count("storage.dbPath") && - !boost::filesystem::path(params["storage.dbPath"].as<string>()).is_absolute()) { + !boost::filesystem::path(params["storage.dbPath"].as<std::string>()).is_absolute()) { return Status(ErrorCodes::BadValue, "dbPath requires an absolute file path with Windows services"); } @@ -943,12 +940,12 @@ Status storeMongodOptions(const moe::Environment& params) { } if (params.count("storage.engine")) { - storageGlobalParams.engine = params["storage.engine"].as<string>(); + storageGlobalParams.engine = params["storage.engine"].as<std::string>(); storageGlobalParams.engineSetByUser = true; } if (params.count("storage.dbPath")) { - storageGlobalParams.dbpath = params["storage.dbPath"].as<string>(); + storageGlobalParams.dbpath = params["storage.dbPath"].as<std::string>(); if (params.count("processManagement.fork") && storageGlobalParams.dbpath[0] != '/') { // we need to change dbpath if we fork since we change // cwd to "/" @@ -1116,17 +1113,17 @@ Status storeMongodOptions(const moe::Environment& params) { } if (params.count("source")) { /* specifies what the source in local.sources should be */ - replSettings.setSource(params["source"].as<string>().c_str()); + replSettings.setSource(params["source"].as<std::string>().c_str()); } if (params.count("pretouch")) { replSettings.setPretouch(params["pretouch"].as<int>()); } if (params.count("replication.replSetName")) { - replSettings.setReplSetString(params["replication.replSetName"].as<string>().c_str()); + replSettings.setReplSetString(params["replication.replSetName"].as<std::string>().c_str()); } if (params.count("replication.replSet")) { /* seed list of hosts for the repl set */ - replSettings.setReplSetString(params["replication.replSet"].as<string>().c_str()); + replSettings.setReplSetString(params["replication.replSet"].as<std::string>().c_str()); } if (params.count("replication.secondaryIndexPrefetch")) { replSettings.setPrefetchIndexMode( @@ -1146,7 +1143,7 @@ Status storeMongodOptions(const moe::Environment& params) { } if (params.count("only")) { - replSettings.setOnly(params["only"].as<string>().c_str()); + replSettings.setOnly(params["only"].as<std::string>().c_str()); } if (params.count("storage.mmapv1.nsSize")) { int x = params["storage.mmapv1.nsSize"].as<int>(); @@ -1255,7 +1252,7 @@ Status storeMongodOptions(const moe::Environment& params) { // needs to be after things like --configsvr parsing, thus here. if (params.count("storage.repairPath")) { - storageGlobalParams.repairpath = params["storage.repairPath"].as<string>(); + storageGlobalParams.repairpath = params["storage.repairPath"].as<std::string>(); if (!storageGlobalParams.repairpath.size()) { return Status(ErrorCodes::BadValue, "repairpath is empty"); } diff --git a/src/mongo/db/query/parsed_distinct.cpp b/src/mongo/db/query/parsed_distinct.cpp index 7fbb38648b2..8ff2277bee6 100644 --- a/src/mongo/db/query/parsed_distinct.cpp +++ b/src/mongo/db/query/parsed_distinct.cpp @@ -34,6 +34,7 @@ #include "mongo/bson/util/bson_extract.h" #include "mongo/db/query/canonical_query.h" #include "mongo/db/query/query_request.h" +#include "mongo/db/repl/read_concern_args.h" #include "mongo/stdx/memory.h" #include "mongo/util/mongoutils/str.h" diff --git a/src/mongo/db/repl/topology_coordinator.cpp b/src/mongo/db/repl/topology_coordinator.cpp index 19c5293c0cc..e8b3710f283 100644 --- a/src/mongo/db/repl/topology_coordinator.cpp +++ b/src/mongo/db/repl/topology_coordinator.cpp @@ -35,6 +35,7 @@ #include <limits> #include <string> +#include "mongo/bson/simple_bsonobj_comparator.h" #include "mongo/db/audit.h" #include "mongo/db/client.h" #include "mongo/db/mongod_options.h" @@ -62,7 +63,7 @@ namespace mongo { namespace repl { -using std::vector; + const Seconds TopologyCoordinator::VoteLease::leaseTime = Seconds(30); // Controls how caught up in replication a secondary with higher priority than the current primary @@ -1995,7 +1996,7 @@ void TopologyCoordinator::prepareStatusResponse(const ReplSetStatusArgs& rsStatu BSONObjBuilder* response, Status* result) { // output for each member - vector<BSONObj> membersOut; + std::vector<BSONObj> membersOut; const MemberState myState = getMemberState(); const Date_t now = rsStatusArgs.now; const OpTime lastOpApplied = getMyLastAppliedOpTime(); diff --git a/src/mongo/db/s/SConscript b/src/mongo/db/s/SConscript index b5c82cdae1d..fd53ece397b 100644 --- a/src/mongo/db/s/SConscript +++ b/src/mongo/db/s/SConscript @@ -20,19 +20,6 @@ env.Library( ) env.Library( - target='sharding_task_executor', - source=[ - 'sharding_task_executor.cpp', - ], - LIBDEPS=[ - '$BUILD_DIR/mongo/base', - '$BUILD_DIR/mongo/executor/thread_pool_task_executor', - '$BUILD_DIR/mongo/s/client/sharding_client', - '$BUILD_DIR/mongo/s/cluster_last_error_info', - ], -) - -env.Library( target='migration_types', source=[ 'migration_session_id.cpp', @@ -106,11 +93,11 @@ env.Library( '$BUILD_DIR/mongo/s/coreshard', '$BUILD_DIR/mongo/s/is_mongos', '$BUILD_DIR/mongo/s/sharding_initialization', + '$BUILD_DIR/mongo/s/sharding_task_executor', '$BUILD_DIR/mongo/util/elapsed_tracker', 'balancer', 'collection_metadata', 'migration_types', - 'sharding_task_executor', 'type_shard_identity', ], LIBDEPS_TAGS=[ diff --git a/src/mongo/db/s/balancer/balancer.cpp b/src/mongo/db/s/balancer/balancer.cpp index d537260c666..4b6c79c343c 100644 --- a/src/mongo/db/s/balancer/balancer.cpp +++ b/src/mongo/db/s/balancer/balancer.cpp @@ -44,7 +44,6 @@ #include "mongo/db/s/balancer/balancer_chunk_selection_policy_impl.h" #include "mongo/db/s/balancer/cluster_statistics_impl.h" #include "mongo/s/balancer_configuration.h" -#include "mongo/s/catalog/sharding_catalog_client.h" #include "mongo/s/catalog/type_chunk.h" #include "mongo/s/catalog_cache.h" #include "mongo/s/client/shard_registry.h" diff --git a/src/mongo/db/s/balancer/balancer_chunk_selection_policy_impl.cpp b/src/mongo/db/s/balancer/balancer_chunk_selection_policy_impl.cpp index 5e89baca4e1..499c7605924 100644 --- a/src/mongo/db/s/balancer/balancer_chunk_selection_policy_impl.cpp +++ b/src/mongo/db/s/balancer/balancer_chunk_selection_policy_impl.cpp @@ -36,7 +36,6 @@ #include "mongo/base/status_with.h" #include "mongo/bson/bsonobj_comparator_interface.h" -#include "mongo/s/catalog/sharding_catalog_client.h" #include "mongo/s/catalog/type_chunk.h" #include "mongo/s/catalog/type_collection.h" #include "mongo/s/catalog/type_tags.h" diff --git a/src/mongo/db/s/balancer/cluster_statistics_impl.cpp b/src/mongo/db/s/balancer/cluster_statistics_impl.cpp index f0f50c1c09f..c23b6b41e32 100644 --- a/src/mongo/db/s/balancer/cluster_statistics_impl.cpp +++ b/src/mongo/db/s/balancer/cluster_statistics_impl.cpp @@ -35,7 +35,6 @@ #include "mongo/base/status_with.h" #include "mongo/bson/util/bson_extract.h" #include "mongo/client/read_preference.h" -#include "mongo/s/catalog/sharding_catalog_client.h" #include "mongo/s/catalog/type_shard.h" #include "mongo/s/client/shard_registry.h" #include "mongo/s/grid.h" @@ -44,10 +43,6 @@ #include "mongo/util/mongoutils/str.h" namespace mongo { - -using std::string; -using std::vector; - namespace { const char kVersionField[] = "version"; @@ -60,7 +55,7 @@ const char kVersionField[] = "version"; * ShardNotFound if shard by that id is not available on the registry * NoSuchKey if the version could not be retrieved */ -StatusWith<string> retrieveShardMongoDVersion(OperationContext* opCtx, ShardId shardId) { +StatusWith<std::string> retrieveShardMongoDVersion(OperationContext* opCtx, ShardId shardId) { auto shardRegistry = Grid::get(opCtx)->shardRegistry(); auto shardStatus = shardRegistry->getShard(opCtx, shardId); if (!shardStatus.isOK()) { @@ -83,7 +78,7 @@ StatusWith<string> retrieveShardMongoDVersion(OperationContext* opCtx, ShardId s BSONObj serverStatus = std::move(commandResponse.getValue().response); - string version; + std::string version; Status status = bsonExtractStringField(serverStatus, kVersionField, &version); if (!status.isOK()) { return status; @@ -100,7 +95,7 @@ ClusterStatisticsImpl::ClusterStatisticsImpl() = default; ClusterStatisticsImpl::~ClusterStatisticsImpl() = default; -StatusWith<vector<ShardStatistics>> ClusterStatisticsImpl::getStats(OperationContext* opCtx) { +StatusWith<std::vector<ShardStatistics>> ClusterStatisticsImpl::getStats(OperationContext* opCtx) { // Get a list of all the shards that are participating in this balance round along with any // maximum allowed quotas and current utilization. We get the latter by issuing // db.serverStatus() (mem.mapped) to all shards. @@ -112,9 +107,9 @@ StatusWith<vector<ShardStatistics>> ClusterStatisticsImpl::getStats(OperationCon return shardsStatus.getStatus(); } - const vector<ShardType> shards(std::move(shardsStatus.getValue().value)); + const auto& shards = shardsStatus.getValue().value; - vector<ShardStatistics> stats; + std::vector<ShardStatistics> stats; for (const auto& shard : shards) { const auto shardSizeStatus = [&]() -> StatusWith<long long> { @@ -133,7 +128,7 @@ StatusWith<vector<ShardStatistics>> ClusterStatisticsImpl::getStats(OperationCon << shard.getName()); } - string mongoDVersion; + std::string mongoDVersion; auto mongoDVersionStatus = retrieveShardMongoDVersion(opCtx, shard.getName()); if (mongoDVersionStatus.isOK()) { @@ -145,7 +140,7 @@ StatusWith<vector<ShardStatistics>> ClusterStatisticsImpl::getStats(OperationCon << causedBy(mongoDVersionStatus.getStatus()); } - std::set<string> shardTags; + std::set<std::string> shardTags; for (const auto& shardTag : shard.getTags()) { shardTags.insert(shardTag); diff --git a/src/mongo/db/s/balancer/migration_manager.cpp b/src/mongo/db/s/balancer/migration_manager.cpp index ce7ed13d743..542b2410810 100644 --- a/src/mongo/db/s/balancer/migration_manager.cpp +++ b/src/mongo/db/s/balancer/migration_manager.cpp @@ -44,7 +44,6 @@ #include "mongo/db/s/balancer/type_migration.h" #include "mongo/executor/task_executor_pool.h" #include "mongo/rpc/get_status_from_command_result.h" -#include "mongo/s/catalog/sharding_catalog_client.h" #include "mongo/s/catalog_cache.h" #include "mongo/s/client/shard_registry.h" #include "mongo/s/grid.h" @@ -64,6 +63,7 @@ using str::stream; namespace { const char kChunkTooBig[] = "chunkTooBig"; // TODO: delete in 3.8 + const WriteConcernOptions kMajorityWriteConcern(WriteConcernOptions::kMajority, WriteConcernOptions::SyncMode::UNSET, Seconds(15)); diff --git a/src/mongo/db/s/balancer/migration_manager_test.cpp b/src/mongo/db/s/balancer/migration_manager_test.cpp index 515ebceb7b2..72a32c50627 100644 --- a/src/mongo/db/s/balancer/migration_manager_test.cpp +++ b/src/mongo/db/s/balancer/migration_manager_test.cpp @@ -29,13 +29,11 @@ #include "mongo/platform/basic.h" #include "mongo/client/remote_command_targeter_mock.h" -#include "mongo/db/client.h" #include "mongo/db/commands.h" #include "mongo/db/s/balancer/migration_manager.h" #include "mongo/db/s/balancer/type_migration.h" #include "mongo/db/write_concern_options.h" #include "mongo/s/catalog/dist_lock_manager_mock.h" -#include "mongo/s/catalog/sharding_catalog_client_impl.h" #include "mongo/s/catalog/type_collection.h" #include "mongo/s/catalog/type_database.h" #include "mongo/s/catalog/type_locks.h" diff --git a/src/mongo/db/s/balancer/scoped_migration_request.cpp b/src/mongo/db/s/balancer/scoped_migration_request.cpp index 6cf19c1f4bf..74511ab1823 100644 --- a/src/mongo/db/s/balancer/scoped_migration_request.cpp +++ b/src/mongo/db/s/balancer/scoped_migration_request.cpp @@ -32,22 +32,21 @@ #include "mongo/db/s/balancer/scoped_migration_request.h" -#include "mongo/db/repl/replication_coordinator_global.h" #include "mongo/db/s/balancer/type_migration.h" #include "mongo/db/write_concern_options.h" -#include "mongo/s/catalog/sharding_catalog_client.h" #include "mongo/s/client/shard_registry.h" #include "mongo/s/grid.h" #include "mongo/util/log.h" namespace mongo { - namespace { + const WriteConcernOptions kMajorityWriteConcern(WriteConcernOptions::kMajority, WriteConcernOptions::SyncMode::UNSET, Seconds(15)); const int kDuplicateKeyErrorMaxRetries = 2; -} + +} // namespace ScopedMigrationRequest::ScopedMigrationRequest(OperationContext* opCtx, const NamespaceString& nss, @@ -93,12 +92,13 @@ ScopedMigrationRequest& ScopedMigrationRequest::operator=(ScopedMigrationRequest StatusWith<ScopedMigrationRequest> ScopedMigrationRequest::writeMigration( OperationContext* opCtx, const MigrateInfo& migrateInfo, bool waitForDelete) { + auto const grid = Grid::get(opCtx); // Try to write a unique migration document to config.migrations. const MigrationType migrationType(migrateInfo, waitForDelete); for (int retry = 0; retry < kDuplicateKeyErrorMaxRetries; ++retry) { - Status result = grid.catalogClient()->insertConfigDocument( + Status result = grid->catalogClient()->insertConfigDocument( opCtx, MigrationType::ConfigNS, migrationType.toBSON(), kMajorityWriteConcern); if (result == ErrorCodes::DuplicateKey) { @@ -106,7 +106,7 @@ StatusWith<ScopedMigrationRequest> ScopedMigrationRequest::writeMigration( // for the request because this migration request will join the active one once // scheduled. auto statusWithMigrationQueryResult = - grid.shardRegistry()->getConfigShard()->exhaustiveFindOnConfig( + grid->shardRegistry()->getConfigShard()->exhaustiveFindOnConfig( opCtx, ReadPreferenceSetting{ReadPreference::PrimaryOnly}, repl::ReadConcernLevel::kLocalReadConcern, diff --git a/src/mongo/db/s/chunk_splitter.cpp b/src/mongo/db/s/chunk_splitter.cpp index f36ed19a0ea..d314b9c5f84 100644 --- a/src/mongo/db/s/chunk_splitter.cpp +++ b/src/mongo/db/s/chunk_splitter.cpp @@ -42,7 +42,6 @@ #include "mongo/db/s/split_chunk.h" #include "mongo/db/s/split_vector.h" #include "mongo/s/balancer_configuration.h" -#include "mongo/s/catalog/sharding_catalog_client.h" #include "mongo/s/catalog/type_chunk.h" #include "mongo/s/catalog_cache.h" #include "mongo/s/chunk_manager.h" diff --git a/src/mongo/db/s/config/configsvr_drop_collection_command.cpp b/src/mongo/db/s/config/configsvr_drop_collection_command.cpp index f9689722426..bffad346dc6 100644 --- a/src/mongo/db/s/config/configsvr_drop_collection_command.cpp +++ b/src/mongo/db/s/config/configsvr_drop_collection_command.cpp @@ -35,7 +35,6 @@ #include "mongo/db/repl/read_concern_args.h" #include "mongo/db/repl/repl_client_info.h" #include "mongo/s/catalog/dist_lock_manager.h" -#include "mongo/s/catalog/sharding_catalog_client.h" #include "mongo/s/catalog/sharding_catalog_manager.h" #include "mongo/s/catalog/type_database.h" #include "mongo/s/catalog_cache.h" @@ -48,7 +47,6 @@ #include "mongo/util/scopeguard.h" namespace mongo { - namespace { MONGO_FP_DECLARE(setDropCollDistLockWait); @@ -205,6 +203,7 @@ private: shardId, cmdDropResult.response["writeConcernError"], *result); } }; + } configsvrDropCollectionCmd; } // namespace diff --git a/src/mongo/db/s/config/configsvr_drop_database_command.cpp b/src/mongo/db/s/config/configsvr_drop_database_command.cpp index 8a9d35df9e8..5a39eee3174 100644 --- a/src/mongo/db/s/config/configsvr_drop_database_command.cpp +++ b/src/mongo/db/s/config/configsvr_drop_database_command.cpp @@ -34,11 +34,9 @@ #include "mongo/db/operation_context.h" #include "mongo/db/repl/repl_client_info.h" #include "mongo/s/catalog/dist_lock_manager.h" -#include "mongo/s/catalog/sharding_catalog_client.h" #include "mongo/s/catalog/sharding_catalog_manager.h" #include "mongo/s/catalog/type_database.h" #include "mongo/s/catalog_cache.h" -#include "mongo/s/client/shard_registry.h" #include "mongo/s/grid.h" #include "mongo/util/log.h" #include "mongo/util/scopeguard.h" diff --git a/src/mongo/db/s/config/configsvr_move_primary_command.cpp b/src/mongo/db/s/config/configsvr_move_primary_command.cpp index 3ff60940242..ad02277cc69 100644 --- a/src/mongo/db/s/config/configsvr_move_primary_command.cpp +++ b/src/mongo/db/s/config/configsvr_move_primary_command.cpp @@ -40,7 +40,6 @@ #include "mongo/db/commands.h" #include "mongo/db/operation_context.h" #include "mongo/db/repl/repl_client_info.h" -#include "mongo/s/catalog/sharding_catalog_client.h" #include "mongo/s/catalog/sharding_catalog_manager.h" #include "mongo/s/catalog/type_database.h" #include "mongo/s/catalog_cache.h" @@ -52,9 +51,6 @@ #include "mongo/util/scopeguard.h" namespace mongo { - -using std::string; - namespace { const WriteConcernOptions kMajorityWriteConcern(WriteConcernOptions::kMajority, @@ -118,7 +114,7 @@ public: auto movePrimaryRequest = MovePrimary::parse(IDLParserErrorContext("ConfigSvrMovePrimary"), cmdObj); - const string dbname = parseNs("", cmdObj); + const auto dbname = parseNs("", cmdObj); uassert( ErrorCodes::InvalidNamespace, @@ -249,7 +245,7 @@ public: // reload catalogCache->purgeDatabase(dbname); - const string oldPrimary = fromShard->getConnString().toString(); + const auto oldPrimary = fromShard->getConnString().toString(); ScopedDbConnection fromconn(fromShard->getConnString()); ON_BLOCK_EXIT([&fromconn] { fromconn.done(); }); diff --git a/src/mongo/db/s/metadata_manager_test.cpp b/src/mongo/db/s/metadata_manager_test.cpp index 040d4638c70..c66835e5135 100644 --- a/src/mongo/db/s/metadata_manager_test.cpp +++ b/src/mongo/db/s/metadata_manager_test.cpp @@ -40,7 +40,6 @@ #include "mongo/db/repl/replication_coordinator_mock.h" #include "mongo/db/s/metadata_manager.h" #include "mongo/db/s/sharding_state.h" -#include "mongo/db/s/type_shard_identity.h" #include "mongo/db/server_options.h" #include "mongo/db/service_context.h" #include "mongo/db/service_context_d_test_fixture.h" diff --git a/src/mongo/db/s/migration_source_manager.cpp b/src/mongo/db/s/migration_source_manager.cpp index 6c831b1a0ae..fb1ebee0293 100644 --- a/src/mongo/db/s/migration_source_manager.cpp +++ b/src/mongo/db/s/migration_source_manager.cpp @@ -45,11 +45,9 @@ #include "mongo/db/s/sharding_statistics.h" #include "mongo/executor/task_executor.h" #include "mongo/executor/task_executor_pool.h" -#include "mongo/s/catalog/sharding_catalog_client.h" #include "mongo/s/catalog/type_chunk.h" #include "mongo/s/catalog/type_shard_collection.h" #include "mongo/s/catalog_cache_loader.h" -#include "mongo/s/client/shard_registry.h" #include "mongo/s/grid.h" #include "mongo/s/request_types/commit_chunk_migration_request_type.h" #include "mongo/s/request_types/set_shard_version_request.h" diff --git a/src/mongo/db/s/sharding_task_executor.cpp b/src/mongo/db/s/sharding_task_executor.cpp deleted file mode 100644 index 5ba9ac969d1..00000000000 --- a/src/mongo/db/s/sharding_task_executor.cpp +++ /dev/null @@ -1,207 +0,0 @@ -/** - * Copyright (C) 2017 MongoDB Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * As a special exception, the copyright holders give permission to link the - * code of portions of this program with the OpenSSL library under certain - * conditions as described in each individual source file and distribute - * linked combinations including the program with the OpenSSL library. You - * must comply with the GNU Affero General Public License in all respects for - * all of the code used other than as permitted herein. If you modify file(s) - * with this exception, you may extend this exception to your version of the - * file(s), but you are not obligated to do so. If you do not wish to do so, - * delete this exception statement from your version. If you delete this - * exception statement from all source files in the program, then also delete - * it in the license file. - */ - -#define MONGO_LOG_DEFAULT_COMPONENT mongo::logger::LogComponent::kSharding - -#include "mongo/platform/basic.h" - -#include "mongo/db/s/sharding_task_executor.h" - -#include "mongo/base/disallow_copying.h" -#include "mongo/base/status_with.h" -#include "mongo/bson/timestamp.h" -#include "mongo/db/logical_time.h" -#include "mongo/db/operation_time_tracker.h" -#include "mongo/executor/thread_pool_task_executor.h" -#include "mongo/rpc/get_status_from_command_result.h" -#include "mongo/rpc/metadata/sharding_metadata.h" -#include "mongo/s/client/shard_registry.h" -#include "mongo/s/cluster_last_error_info.h" -#include "mongo/s/grid.h" -#include "mongo/util/log.h" -#include "mongo/util/scopeguard.h" - -namespace mongo { -namespace executor { - -namespace { -const std::string kOperationTimeField = "operationTime"; -} - -ShardingTaskExecutor::ShardingTaskExecutor(std::unique_ptr<ThreadPoolTaskExecutor> executor) - : _executor(std::move(executor)) {} - -void ShardingTaskExecutor::startup() { - _executor->startup(); -} - -void ShardingTaskExecutor::shutdown() { - _executor->shutdown(); -} - -void ShardingTaskExecutor::join() { - _executor->join(); -} - -void ShardingTaskExecutor::appendDiagnosticBSON(mongo::BSONObjBuilder* builder) const { - _executor->appendDiagnosticBSON(builder); -} - -Date_t ShardingTaskExecutor::now() { - return _executor->now(); -} - -StatusWith<TaskExecutor::EventHandle> ShardingTaskExecutor::makeEvent() { - return _executor->makeEvent(); -} - -void ShardingTaskExecutor::signalEvent(const EventHandle& event) { - return _executor->signalEvent(event); -} - -StatusWith<TaskExecutor::CallbackHandle> ShardingTaskExecutor::onEvent(const EventHandle& event, - const CallbackFn& work) { - return _executor->onEvent(event, work); -} - -void ShardingTaskExecutor::waitForEvent(const EventHandle& event) { - _executor->waitForEvent(event); -} - -StatusWith<stdx::cv_status> ShardingTaskExecutor::waitForEvent(OperationContext* opCtx, - const EventHandle& event, - Date_t deadline) { - return _executor->waitForEvent(opCtx, event, deadline); -} - -StatusWith<TaskExecutor::CallbackHandle> ShardingTaskExecutor::scheduleWork( - const CallbackFn& work) { - return _executor->scheduleWork(work); -} - -StatusWith<TaskExecutor::CallbackHandle> ShardingTaskExecutor::scheduleWorkAt( - Date_t when, const CallbackFn& work) { - return _executor->scheduleWorkAt(when, work); -} - -StatusWith<TaskExecutor::CallbackHandle> ShardingTaskExecutor::scheduleRemoteCommand( - const RemoteCommandRequest& request, const RemoteCommandCallbackFn& cb) { - - // schedule the user's callback if there is not opCtx - if (!request.opCtx) { - return _executor->scheduleRemoteCommand(request, cb); - } - - boost::optional<RemoteCommandRequest> newRequest; - - if (request.opCtx->getLogicalSessionId() && !request.cmdObj.hasField("lsid")) { - newRequest.emplace(request); - BSONObjBuilder bob(std::move(newRequest->cmdObj)); - { - BSONObjBuilder subbob(bob.subobjStart("lsid")); - request.opCtx->getLogicalSessionId()->serialize(&subbob); - } - - newRequest->cmdObj = bob.obj(); - } - - std::shared_ptr<OperationTimeTracker> timeTracker = OperationTimeTracker::get(request.opCtx); - - auto clusterGLE = ClusterLastErrorInfo::get(request.opCtx->getClient()); - - auto shardingCb = [timeTracker, clusterGLE, cb]( - const TaskExecutor::RemoteCommandCallbackArgs& args) { - ON_BLOCK_EXIT([&cb, &args]() { cb(args); }); - - // Update replica set monitor info. - auto shard = grid.shardRegistry()->getShardForHostNoReload(args.request.target); - if (!shard) { - LOG(1) << "Could not find shard containing host: " << args.request.target.toString(); - } - - if (!args.response.isOK()) { - if (shard) { - shard->updateReplSetMonitor(args.request.target, args.response.status); - } - LOG(1) << "Error processing the remote request, not updating operationTime or gLE"; - return; - } - - if (shard) { - shard->updateReplSetMonitor(args.request.target, - getStatusFromCommandResult(args.response.data)); - } - - // Update the logical clock. - invariant(timeTracker); - auto operationTime = args.response.data[kOperationTimeField]; - if (!operationTime.eoo()) { - invariant(operationTime.type() == BSONType::bsonTimestamp); - timeTracker->updateOperationTime(LogicalTime(operationTime.timestamp())); - } - - // Update getLastError info for the client if we're tracking it. - if (clusterGLE) { - auto swShardingMetadata = - rpc::ShardingMetadata::readFromMetadata(args.response.metadata); - if (swShardingMetadata.isOK()) { - auto shardingMetadata = std::move(swShardingMetadata.getValue()); - - auto shardConn = ConnectionString::parse(args.request.target.toString()); - if (!shardConn.isOK()) { - severe() << "got bad host string in saveGLEStats: " << args.request.target; - } - - clusterGLE->addHostOpTime(shardConn.getValue(), - HostOpTime(shardingMetadata.getLastOpTime(), - shardingMetadata.getLastElectionId())); - } else if (swShardingMetadata.getStatus() != ErrorCodes::NoSuchKey) { - warning() << "Got invalid sharding metadata " - << redact(swShardingMetadata.getStatus()) << " metadata object was '" - << redact(args.response.metadata) << "'"; - } - } - }; - - return _executor->scheduleRemoteCommand(newRequest ? *newRequest : request, shardingCb); -} - -void ShardingTaskExecutor::cancel(const CallbackHandle& cbHandle) { - _executor->cancel(cbHandle); -} - -void ShardingTaskExecutor::wait(const CallbackHandle& cbHandle) { - _executor->wait(cbHandle); -} - -void ShardingTaskExecutor::appendConnectionStats(ConnectionPoolStats* stats) const { - _executor->appendConnectionStats(stats); -} - -} // namespace executor -} // namespace mongo diff --git a/src/mongo/db/s/sharding_task_executor.h b/src/mongo/db/s/sharding_task_executor.h deleted file mode 100644 index 4c2571c684a..00000000000 --- a/src/mongo/db/s/sharding_task_executor.h +++ /dev/null @@ -1,82 +0,0 @@ -/** - * Copyright (C) 2017 MongoDB Inc. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - * As a special exception, the copyright holders give permission to link the - * code of portions of this program with the OpenSSL library under certain - * conditions as described in each individual source file and distribute - * linked combinations including the program with the OpenSSL library. You - * must comply with the GNU Affero General Public License in all respects for - * all of the code used other than as permitted herein. If you modify file(s) - * with this exception, you may extend this exception to your version of the - * file(s), but you are not obligated to do so. If you do not wish to do so, - * delete this exception statement from your version. If you delete this - * exception statement from all source files in the program, then also delete - * it in the license file. - */ - -#pragma once - -#include <memory> - -#include "mongo/base/disallow_copying.h" -#include "mongo/base/status_with.h" -#include "mongo/executor/task_executor.h" -#include "mongo/stdx/condition_variable.h" -#include "mongo/stdx/list.h" -#include "mongo/stdx/mutex.h" - -namespace mongo { -namespace executor { - -struct ConnectionPoolStats; -class ThreadPoolTaskExecutor; - -/** - * Implementation of a TaskExecutor that uses ThreadPoolTaskExecutor to submit tasks and allows to - * override methods if needed. - */ -class ShardingTaskExecutor final : public TaskExecutor { - MONGO_DISALLOW_COPYING(ShardingTaskExecutor); - -public: - ShardingTaskExecutor(std::unique_ptr<ThreadPoolTaskExecutor> executor); - - void startup() override; - void shutdown() override; - void join() override; - void appendDiagnosticBSON(BSONObjBuilder* builder) const override; - Date_t now() override; - StatusWith<EventHandle> makeEvent() override; - void signalEvent(const EventHandle& event) override; - StatusWith<CallbackHandle> onEvent(const EventHandle& event, const CallbackFn& work) override; - void waitForEvent(const EventHandle& event) override; - StatusWith<stdx::cv_status> waitForEvent(OperationContext* opCtx, - const EventHandle& event, - Date_t deadline) override; - StatusWith<CallbackHandle> scheduleWork(const CallbackFn& work) override; - StatusWith<CallbackHandle> scheduleWorkAt(Date_t when, const CallbackFn& work) override; - StatusWith<CallbackHandle> scheduleRemoteCommand(const RemoteCommandRequest& request, - const RemoteCommandCallbackFn& cb) override; - void cancel(const CallbackHandle& cbHandle) override; - void wait(const CallbackHandle& cbHandle) override; - - void appendConnectionStats(ConnectionPoolStats* stats) const override; - -private: - std::unique_ptr<ThreadPoolTaskExecutor> _executor; -}; - -} // namespace executor -} // namespace mongo diff --git a/src/mongo/db/server_options.cpp b/src/mongo/db/server_options.cpp index d37442e4519..bc01417b6f8 100644 --- a/src/mongo/db/server_options.cpp +++ b/src/mongo/db/server_options.cpp @@ -25,6 +25,8 @@ * then also delete it in the license file. */ +#include "mongo/platform/basic.h" + #include "mongo/db/server_options.h" namespace mongo { diff --git a/src/mongo/db/server_options.h b/src/mongo/db/server_options.h index 826f5760313..478fdbab935 100644 --- a/src/mongo/db/server_options.h +++ b/src/mongo/db/server_options.h @@ -30,7 +30,6 @@ #include "mongo/db/jsobj.h" #include "mongo/platform/atomic_word.h" #include "mongo/platform/process_id.h" -#include "mongo/s/catalog/sharding_catalog_client.h" namespace mongo { diff --git a/src/mongo/db/service_context_d.cpp b/src/mongo/db/service_context_d.cpp index 15e39126539..980bea314b0 100644 --- a/src/mongo/db/service_context_d.cpp +++ b/src/mongo/db/service_context_d.cpp @@ -36,6 +36,7 @@ #include "mongo/base/initializer.h" #include "mongo/db/client.h" #include "mongo/db/concurrency/lock_state.h" +#include "mongo/db/operation_context.h" #include "mongo/db/service_entry_point_mongod.h" #include "mongo/db/storage/storage_engine.h" #include "mongo/db/storage/storage_engine_lock_file.h" |