summaryrefslogtreecommitdiff
path: root/src/mongo/client
diff options
context:
space:
mode:
authorAndrew Morrow <acm@mongodb.com>2018-12-15 18:53:04 -0500
committerAndrew Morrow <acm@mongodb.com>2018-12-17 20:16:06 -0500
commit05ebfef11161b96ba0e8374f34c359a403097f60 (patch)
treea21a2d750ed161324bbe1b77d3c7bc95b9804448 /src/mongo/client
parent0d54f9e3b667ce2654137aacbad6ade6db783208 (diff)
downloadmongo-05ebfef11161b96ba0e8374f34c359a403097f60.tar.gz
SERVER-38450 Convert global conn pool options to IDL
Diffstat (limited to 'src/mongo/client')
-rw-r--r--src/mongo/client/SConscript1
-rw-r--r--src/mongo/client/global_conn_pool.cpp26
-rw-r--r--src/mongo/client/global_conn_pool.idl97
3 files changed, 101 insertions, 23 deletions
diff --git a/src/mongo/client/SConscript b/src/mongo/client/SConscript
index 0b76fa83d1b..8deaaa5aaec 100644
--- a/src/mongo/client/SConscript
+++ b/src/mongo/client/SConscript
@@ -183,6 +183,7 @@ clientDriverEnv.Library(
'dbclient_connection.cpp',
'dbclient_rs.cpp',
'global_conn_pool.cpp',
+ env.Idlc('global_conn_pool.idl')[0],
'replica_set_monitor.cpp',
'replica_set_monitor_manager.cpp',
],
diff --git a/src/mongo/client/global_conn_pool.cpp b/src/mongo/client/global_conn_pool.cpp
index 2061c0c8f58..92f7bca11d4 100644
--- a/src/mongo/client/global_conn_pool.cpp
+++ b/src/mongo/client/global_conn_pool.cpp
@@ -33,33 +33,13 @@
#include "mongo/client/global_conn_pool.h"
#include "mongo/base/init.h"
-#include "mongo/db/server_parameters.h"
+#include "mongo/client/global_conn_pool_gen.h"
namespace mongo {
namespace {
-// Maximum connections per host the connection pool should store
-int maxConnsPerHost(200);
-ExportedServerParameter<int, ServerParameterType::kStartupOnly> //
- maxConnsPerHostParameter(ServerParameterSet::getGlobal(),
- "connPoolMaxConnsPerHost",
- &maxConnsPerHost);
-
-// Maximum in-use connections per host in the global connection pool
-int maxInUseConnsPerHost(std::numeric_limits<int>::max());
-ExportedServerParameter<int, ServerParameterType::kStartupOnly> //
- maxInUseConnsPerHostParameter(ServerParameterSet::getGlobal(),
- "connPoolMaxInUseConnsPerHost",
- &maxInUseConnsPerHost);
-
-// Amount of time, in minutes, to keep idle connections in the global connection pool
-int globalConnPoolIdleTimeout(std::numeric_limits<int>::max());
-ExportedServerParameter<int, ServerParameterType::kStartupOnly> //
- globalConnPoolIdleTimeoutParameter(ServerParameterSet::getGlobal(),
- "globalConnPoolIdleTimeoutMinutes",
- &globalConnPoolIdleTimeout);
-
-MONGO_INITIALIZER(InitializeGlobalConnectionPool)(InitializerContext* context) {
+MONGO_INITIALIZER_WITH_PREREQUISITES(InitializeGlobalConnectionPool, ("EndStartupOptionStorage"))
+(InitializerContext* context) {
globalConnPool.setName("connection pool");
globalConnPool.setMaxPoolSize(maxConnsPerHost);
globalConnPool.setMaxInUse(maxInUseConnsPerHost);
diff --git a/src/mongo/client/global_conn_pool.idl b/src/mongo/client/global_conn_pool.idl
new file mode 100644
index 00000000000..a0415314159
--- /dev/null
+++ b/src/mongo/client/global_conn_pool.idl
@@ -0,0 +1,97 @@
+# Copyright (C) 2018-present MongoDB, Inc.
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the Server Side Public License, version 1,
+# as published by MongoDB, Inc.
+#
+# 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
+# Server Side Public License for more details.
+#
+# You should have received a copy of the Server Side Public License
+# along with this program. If not, see
+# <http://www.mongodb.com/licensing/server-side-public-license>.
+#
+# 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 Server Side 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.
+#
+
+global:
+ cpp_namespace: "mongo"
+
+imports:
+ - "mongo/idl/basic_types.idl"
+
+server_parameters:
+ connPoolMaxConnsPerHost:
+ description: >
+ New in version 2.6.
+
+ Available for both mongod and mongos.
+
+ Sets the maximum size of the legacy connection pools for
+ outgoing connections to other mongod instances in the global
+ connection pool. The size of a pool does not prevent the
+ creation of additional connections, but does prevent a
+ connection pool from retaining connections in excess of the
+ value of connPoolMaxConnsPerHost.
+
+ Only adjust this setting if your driver does not pool
+ connections and you're using authentication in the context of a
+ sharded cluster.
+
+ set_at:
+ - startup
+
+ cpp_vartype: int
+ cpp_varname: maxConnsPerHost
+ default: 200
+
+ connPoolMaxInUseConnsPerHost:
+ description: >
+ New in version 3.6.3.
+
+ Available for both mongod and mongos.
+
+ Sets the maximum number of in-use connections at any given time
+ for for outgoing connections to other mongod instances in the
+ legacy global connection pool.
+
+ By default, the parameter is unset.
+
+ set_at:
+ - startup
+
+ cpp_vartype: int
+ cpp_varname: maxInUseConnsPerHost
+ default:
+ expr: std::numeric_limits<int>::max()
+
+ globalConnPoolIdleTimeoutMinutes:
+ description: >
+ New in version 3.6.3.
+
+ Available for both mongod and mongos.
+
+ Sets the time limit that connection in the legacy global
+ connection pool can remain idle before being closed.
+
+ By default, the parameter is unset.
+
+ set_at:
+ - startup
+
+ cpp_vartype: int
+ cpp_varname: globalConnPoolIdleTimeout
+ default:
+ expr: std::numeric_limits<int>::max()