From ebaa578351c9c6b47c2f28ef6d74451e1483036b Mon Sep 17 00:00:00 2001 From: Gary Kotton Date: Wed, 5 Jun 2013 08:06:15 +0000 Subject: Enable user to configure pool_timeout Fixes bug 1160442 In addition to this there are the following changes: 1. The set_default method can configure the QueuePool parameters 2. The max_pool_size is defaulted to the QueuePool default Change-Id: Ie99f7fc4edba68127c4af508290d8074d7094be9 --- openstack/common/db/sqlalchemy/session.py | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'openstack') diff --git a/openstack/common/db/sqlalchemy/session.py b/openstack/common/db/sqlalchemy/session.py index 4394846..cb8fcf9 100644 --- a/openstack/common/db/sqlalchemy/session.py +++ b/openstack/common/db/sqlalchemy/session.py @@ -298,7 +298,7 @@ database_opts = [ help='Minimum number of SQL connections to keep open in a ' 'pool'), cfg.IntOpt('max_pool_size', - default=5, + default=None, deprecated_name='sql_max_pool_size', deprecated_group=DEFAULT, help='Maximum number of SQL connections to keep open in a ' @@ -330,6 +330,9 @@ database_opts = [ deprecated_name='sql_connection_trace', deprecated_group=DEFAULT, help='Add python stack traces to SQL as comment strings'), + cfg.IntOpt('pool_timeout', + default=None, + help='If set, use this value for pool_timeout with sqlalchemy'), ] CONF = cfg.CONF @@ -343,12 +346,23 @@ _SLAVE_ENGINE = None _SLAVE_MAKER = None -def set_defaults(sql_connection, sqlite_db): +def set_defaults(sql_connection, sqlite_db, max_pool_size=None, + max_overflow=None, pool_timeout=None): """Set defaults for configuration variables.""" cfg.set_defaults(database_opts, connection=sql_connection) cfg.set_defaults(sqlite_db_opts, sqlite_db=sqlite_db) + # Update the QueuePool defaults + if max_pool_size is not None: + cfg.set_defaults(database_opts, + max_pool_size=max_pool_size) + if max_overflow is not None: + cfg.set_defaults(database_opts, + max_overflow=max_overflow) + if pool_timeout is not None: + cfg.set_defaults(database_opts, + pool_timeout=pool_timeout) def cleanup(): @@ -620,9 +634,12 @@ def create_engine(sql_connection, sqlite_fk=False): engine_args["poolclass"] = StaticPool engine_args["connect_args"] = {'check_same_thread': False} else: - engine_args['pool_size'] = CONF.database.max_pool_size + if CONF.database.max_pool_size is not None: + engine_args['pool_size'] = CONF.database.max_pool_size if CONF.database.max_overflow is not None: engine_args['max_overflow'] = CONF.database.max_overflow + if CONF.database.pool_timeout is not None: + engine_args['pool_timeout'] = CONF.database.pool_timeout engine = sqlalchemy.create_engine(sql_connection, **engine_args) -- cgit