diff options
author | Anton Oyung <anton.oyung@mongodb.com> | 2019-11-19 18:31:44 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-03-17 18:07:20 +0000 |
commit | d39e7190321588f593eb2bceb2fbe4208631866f (patch) | |
tree | 68e617f4cdae47559955ef3ae70a0ceee8116c61 | |
parent | a8ce9aab78095ba80a813200b31f179735693332 (diff) | |
download | mongo-d39e7190321588f593eb2bceb2fbe4208631866f.tar.gz |
SERVER-44626: Add new setParameter loadRoutingTableOnStartup
(cherry picked from commit 0ccd538e9bb21e67cff1150af464318457132a3e)
-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) | 3 | ||||
-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, 35 insertions, 7 deletions
diff --git a/jstests/sharding/mongos_precache_routing_info.js b/jstests/sharding/mongos_precache_routing_info.js index 3471f208e99..6c3e59e7591 100644 --- a/jstests/sharding/mongos_precache_routing_info.js +++ b/jstests/sharding/mongos_precache_routing_info.js @@ -31,5 +31,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 fe4c77bea88..3ba193d8a1f 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 6f090bbb4ab..e9add81153c 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/memory.h" #include "mongo/stdx/thread.h" #include "mongo/util/concurrency/thread_pool.h" @@ -271,9 +271,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(); @@ -307,9 +312,6 @@ Status preWarmConnectionPool(OperationContext* opCtx) { return Status::OK(); } - // Should not be called by mongod - invariant(serverGlobalParams.clusterRole != ClusterRole::ShardServer); - Timer timer; std::vector<HostAndPort> allHosts; auto const grid = Grid::get(opCtx); diff --git a/src/mongo/s/pre_warm_connection_pool_impl.cpp b/src/mongo/s/warmup_server_parameters.cpp index 4721498be63..e4e692059f6 100644 --- a/src/mongo/s/pre_warm_connection_pool_impl.cpp +++ b/src/mongo/s/warmup_server_parameters.cpp @@ -27,10 +27,11 @@ * 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; 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. */ |