diff options
author | Andrew Morrow <acm@mongodb.com> | 2018-12-15 18:53:04 -0500 |
---|---|---|
committer | Andrew Morrow <acm@mongodb.com> | 2018-12-17 20:16:06 -0500 |
commit | 05ebfef11161b96ba0e8374f34c359a403097f60 (patch) | |
tree | a21a2d750ed161324bbe1b77d3c7bc95b9804448 /src/mongo/client | |
parent | 0d54f9e3b667ce2654137aacbad6ade6db783208 (diff) | |
download | mongo-05ebfef11161b96ba0e8374f34c359a403097f60.tar.gz |
SERVER-38450 Convert global conn pool options to IDL
Diffstat (limited to 'src/mongo/client')
-rw-r--r-- | src/mongo/client/SConscript | 1 | ||||
-rw-r--r-- | src/mongo/client/global_conn_pool.cpp | 26 | ||||
-rw-r--r-- | src/mongo/client/global_conn_pool.idl | 97 |
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() |