diff options
author | Jason Carey <jcarey@argv.me> | 2016-11-16 11:06:49 -0500 |
---|---|---|
committer | Jason Carey <jcarey@argv.me> | 2016-11-16 11:15:43 -0500 |
commit | 009580ad490190ba33d1c6253ebd8d91808923e4 (patch) | |
tree | e445fa9f5f8f4c0e39f9f8996ad154617832a05b | |
parent | 491879a73d9a6304c9b3824193a3a29d09039b15 (diff) | |
download | mongo-r3.2.11.tar.gz |
SERVER-25027 Configurable connpool in mongosr3.2.11
Export server parameters for sharding connection pool
Not cherry-picked
-rw-r--r-- | src/mongo/executor/connection_pool.cpp | 6 | ||||
-rw-r--r-- | src/mongo/s/sharding_initialization.cpp | 25 |
2 files changed, 15 insertions, 16 deletions
diff --git a/src/mongo/executor/connection_pool.cpp b/src/mongo/executor/connection_pool.cpp index d194bdd8288..ee243789587 100644 --- a/src/mongo/executor/connection_pool.cpp +++ b/src/mongo/executor/connection_pool.cpp @@ -166,11 +166,11 @@ private: State _state; }; -const Milliseconds ConnectionPool::kDefaultHostTimeout = Milliseconds(300000); // 5mins +const Milliseconds ConnectionPool::kDefaultHostTimeout = Minutes(5); size_t const ConnectionPool::kDefaultMaxConns = std::numeric_limits<size_t>::max(); size_t const ConnectionPool::kDefaultMinConns = 1; -const Milliseconds ConnectionPool::kDefaultRefreshRequirement = Milliseconds(60000); // 1min -const Milliseconds ConnectionPool::kDefaultRefreshTimeout = Milliseconds(20000); // 20secs +const Milliseconds ConnectionPool::kDefaultRefreshRequirement = Minutes(1); +const Milliseconds ConnectionPool::kDefaultRefreshTimeout = Seconds(20); const Status ConnectionPool::kConnectionStateUnknown = Status(ErrorCodes::InternalError, "Connection is in an unknown state"); diff --git a/src/mongo/s/sharding_initialization.cpp b/src/mongo/s/sharding_initialization.cpp index 7a953d136c0..37257afe244 100644 --- a/src/mongo/s/sharding_initialization.cpp +++ b/src/mongo/s/sharding_initialization.cpp @@ -64,19 +64,13 @@ namespace mongo { using executor::ConnectionPool; -MONGO_EXPORT_STARTUP_SERVER_PARAMETER(ShardingTaskExecutorPoolHostTimeoutMS, - int, - ConnectionPool::kDefaultHostTimeout.count()); +MONGO_EXPORT_STARTUP_SERVER_PARAMETER(ShardingTaskExecutorPoolHostTimeoutMS, int, -1); MONGO_EXPORT_STARTUP_SERVER_PARAMETER(ShardingTaskExecutorPoolMaxSize, int, -1); MONGO_EXPORT_STARTUP_SERVER_PARAMETER(ShardingTaskExecutorPoolMinSize, int, static_cast<int>(ConnectionPool::kDefaultMinConns)); -MONGO_EXPORT_STARTUP_SERVER_PARAMETER(ShardingTaskExecutorPoolRefreshRequirementMS, - int, - ConnectionPool::kDefaultRefreshRequirement.count()); -MONGO_EXPORT_STARTUP_SERVER_PARAMETER(ShardingTaskExecutorPoolRefreshTimeoutMS, - int, - ConnectionPool::kDefaultRefreshTimeout.count()); +MONGO_EXPORT_STARTUP_SERVER_PARAMETER(ShardingTaskExecutorPoolRefreshRequirementMS, int, -1); +MONGO_EXPORT_STARTUP_SERVER_PARAMETER(ShardingTaskExecutorPoolRefreshTimeoutMS, int, -1); namespace { @@ -144,7 +138,6 @@ std::unique_ptr<ThreadPoolTaskExecutor> makeTaskExecutor(std::unique_ptr<Network std::unique_ptr<TaskExecutorPool> makeTaskExecutorPool(std::unique_ptr<NetworkInterface> fixedNet, ConnectionPool::Options connPoolOptions) { std::vector<std::unique_ptr<executor::TaskExecutor>> executors; - for (size_t i = 0; i < TaskExecutorPool::getSuggestedPoolSize(); ++i) { auto net = executor::makeNetworkInterface( "NetworkInterfaceASIO-TaskExecutorPool-" + std::to_string(i), @@ -182,13 +175,19 @@ Status initializeGlobalShardingState(OperationContext* txn, // MONGO_EXPORT_STARTUP_SERVER_PARAMETER because it's not guaranteed to be initialized. // The following code is a workaround. ConnectionPool::Options connPoolOptions; - connPoolOptions.hostTimeout = Milliseconds(ShardingTaskExecutorPoolHostTimeoutMS); + connPoolOptions.hostTimeout = (ShardingTaskExecutorPoolHostTimeoutMS != -1) + ? Milliseconds(ShardingTaskExecutorPoolHostTimeoutMS) + : ConnectionPool::kDefaultHostTimeout; connPoolOptions.maxConnections = (ShardingTaskExecutorPoolMaxSize != -1) ? ShardingTaskExecutorPoolMaxSize : ConnectionPool::kDefaultMaxConns; connPoolOptions.minConnections = ShardingTaskExecutorPoolMinSize; - connPoolOptions.refreshRequirement = Milliseconds(ShardingTaskExecutorPoolRefreshRequirementMS); - connPoolOptions.refreshTimeout = Milliseconds(ShardingTaskExecutorPoolRefreshTimeoutMS); + connPoolOptions.refreshRequirement = (ShardingTaskExecutorPoolRefreshRequirementMS != -1) + ? Milliseconds(ShardingTaskExecutorPoolRefreshRequirementMS) + : ConnectionPool::kDefaultRefreshRequirement; + connPoolOptions.refreshTimeout = (ShardingTaskExecutorPoolRefreshTimeoutMS != -1) + ? Milliseconds(ShardingTaskExecutorPoolRefreshTimeoutMS) + : ConnectionPool::kDefaultRefreshTimeout; auto network = executor::makeNetworkInterface("NetworkInterfaceASIO-ShardRegistry", |