summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Carey <jcarey@argv.me>2016-11-16 11:06:49 -0500
committerJason Carey <jcarey@argv.me>2016-11-16 11:15:43 -0500
commit009580ad490190ba33d1c6253ebd8d91808923e4 (patch)
treee445fa9f5f8f4c0e39f9f8996ad154617832a05b
parent491879a73d9a6304c9b3824193a3a29d09039b15 (diff)
downloadmongo-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.cpp6
-rw-r--r--src/mongo/s/sharding_initialization.cpp25
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",