diff options
author | Anton Oyung <anton.oyung@mongodb.com> | 2019-11-19 18:31:44 +0000 |
---|---|---|
committer | evergreen <evergreen@mongodb.com> | 2019-11-19 18:31:44 +0000 |
commit | 0ccd538e9bb21e67cff1150af464318457132a3e (patch) | |
tree | f40744da74dc7b77e0e46063fb9be81bef295909 | |
parent | 542479adb86d90e80ce4faed167e6848d4107adf (diff) | |
download | mongo-0ccd538e9bb21e67cff1150af464318457132a3e.tar.gz |
SERVER-44626: Add new setParameter loadRoutingTableOnStartup
-rw-r--r-- | jstests/sharding/mongos_precache_routing_info.js | 11 | ||||
-rw-r--r-- | src/mongo/s/SConscript | 2 | ||||
-rw-r--r-- | src/mongo/s/mongos_options.idl | 9 | ||||
-rw-r--r-- | src/mongo/s/sharding_initialization.cpp | 10 | ||||
-rw-r--r-- | src/mongo/s/warmup_server_parameters.cpp (renamed from src/mongo/s/pre_warm_connection_pool_impl.cpp) | 5 | ||||
-rw-r--r-- | src/mongo/s/warmup_server_parameters.h (renamed from src/mongo/s/pre_warm_connection_pool_impl.h) | 7 |
6 files changed, 36 insertions, 8 deletions
diff --git a/jstests/sharding/mongos_precache_routing_info.js b/jstests/sharding/mongos_precache_routing_info.js index 2b4266a6d63..786d56149db 100644 --- a/jstests/sharding/mongos_precache_routing_info.js +++ b/jstests/sharding/mongos_precache_routing_info.js @@ -33,5 +33,16 @@ db = s.getDB("test"); ss = db.serverStatus(); assert.eq(1, ss.shardingStatistics.catalogCache.countFullRefreshesStarted); +// does not pre cache when set parameter is disabled +s.restartMongos(0, { + restart: true, + setParameter: {loadRoutingTableOnStartup: false}, +}); +db = s.getDB("test"); + +// check for # refreshes started +ss = db.serverStatus(); +assert.eq(0, ss.shardingStatistics.catalogCache.countFullRefreshesStarted); + s.stop(); })(); diff --git a/src/mongo/s/SConscript b/src/mongo/s/SConscript index 1d4cc94c795..20cf7b4a6fd 100644 --- a/src/mongo/s/SConscript +++ b/src/mongo/s/SConscript @@ -105,7 +105,7 @@ env.Library( source=[ 'sharding_initialization.cpp', 'sharding_task_executor_pool_controller.cpp', - 'pre_warm_connection_pool_impl.cpp', + 'warmup_server_parameters.cpp', env.Idlc('sharding_task_executor_pool.idl')[0], 'client/sharding_connection_hook.cpp', 'client/sharding_network_connection_hook.cpp', diff --git a/src/mongo/s/mongos_options.idl b/src/mongo/s/mongos_options.idl index 5c8033a24b0..a9d04e8d39e 100644 --- a/src/mongo/s/mongos_options.idl +++ b/src/mongo/s/mongos_options.idl @@ -31,12 +31,19 @@ global: cpp_namespace: "mongo" cpp_includes: - "mongo/s/mongos_options.h" - - "mongo/s/pre_warm_connection_pool_impl.h" + - "mongo/s/warmup_server_parameters.h" configs: section: "Sharding options" source: [ yaml, cli, ini ] server_parameters: + loadRoutingTableOnStartup: + description: <- + Enables precaching of the mongos routing table on startup. + set_at: [ startup ] + cpp_varname: "gLoadRoutingTableOnStartup" + default: true + warmMinConnectionsInShardingTaskExecutorPoolOnStartup: description: <- Enables prewarming of the connection pool. diff --git a/src/mongo/s/sharding_initialization.cpp b/src/mongo/s/sharding_initialization.cpp index f3598d797f3..733c0bcb3df 100644 --- a/src/mongo/s/sharding_initialization.cpp +++ b/src/mongo/s/sharding_initialization.cpp @@ -66,11 +66,11 @@ #include "mongo/s/client/sharding_network_connection_hook.h" #include "mongo/s/cluster_identity_loader.h" #include "mongo/s/grid.h" -#include "mongo/s/pre_warm_connection_pool_impl.h" #include "mongo/s/query/cluster_cursor_manager.h" #include "mongo/s/sharding_task_executor.h" #include "mongo/s/sharding_task_executor_pool_controller.h" #include "mongo/s/sharding_task_executor_pool_gen.h" +#include "mongo/s/warmup_server_parameters.h" #include "mongo/stdx/thread.h" #include "mongo/util/concurrency/thread_pool.h" #include "mongo/util/exit.h" @@ -263,9 +263,14 @@ Status waitForShardRegistryReload(OperationContext* opCtx) { } Status preCacheMongosRoutingInfo(OperationContext* opCtx) { + if (!gLoadRoutingTableOnStartup) { + return Status::OK(); + } + if (serverGlobalParams.clusterRole == ClusterRole::ConfigServer) { return Status::OK(); } + auto grid = Grid::get(opCtx); auto shardingCatalogClient = grid->catalogClient(); @@ -298,9 +303,6 @@ Status preWarmConnectionPool(OperationContext* opCtx) { return Status::OK(); } - // Should not be called by mongod - invariant(serverGlobalParams.clusterRole != ClusterRole::ShardServer); - std::vector<HostAndPort> allHosts; auto const grid = Grid::get(opCtx); auto allShardsStatus = diff --git a/src/mongo/s/pre_warm_connection_pool_impl.cpp b/src/mongo/s/warmup_server_parameters.cpp index cb082983ce1..3809bf64844 100644 --- a/src/mongo/s/pre_warm_connection_pool_impl.cpp +++ b/src/mongo/s/warmup_server_parameters.cpp @@ -27,12 +27,13 @@ * it in the license file. */ -#include "mongo/s/pre_warm_connection_pool_impl.h" +#include "mongo/s/warmup_server_parameters.h" namespace mongo { +bool gLoadRoutingTableOnStartup = true; bool gWarmMinConnectionsInShardingTaskExecutorPoolOnStartup = true; int gWarmMinConnectionsInShardingTaskExecutorPoolOnStartupWaitMS = 2000; -} // namespace mongo
\ No newline at end of file +} // namespace mongo diff --git a/src/mongo/s/pre_warm_connection_pool_impl.h b/src/mongo/s/warmup_server_parameters.h index f5b4a5dfbe0..9d1b616b322 100644 --- a/src/mongo/s/pre_warm_connection_pool_impl.h +++ b/src/mongo/s/warmup_server_parameters.h @@ -31,6 +31,13 @@ namespace mongo { /** + * Set parameter used to control whether or not the mongos attempts to precache the routing table on + * startup. + */ + +extern bool gLoadRoutingTableOnStartup; + +/** * Set parameters used to control whether or not the mongos attempts to warm up the connection * pool on start up and for how long it should try. */ |