diff options
author | Gary Kotton <gkotton@redhat.com> | 2013-06-05 08:06:15 +0000 |
---|---|---|
committer | Gary Kotton <gkotton@redhat.com> | 2013-06-11 09:29:47 +0000 |
commit | ebaa578351c9c6b47c2f28ef6d74451e1483036b (patch) | |
tree | 3ec8c3b4ef05cf8aee733f6b95a05ca2b3276053 /openstack | |
parent | faddbbe318cf62791624469c4304ae4fdcc2e639 (diff) | |
download | oslo-ebaa578351c9c6b47c2f28ef6d74451e1483036b.tar.gz oslo-ebaa578351c9c6b47c2f28ef6d74451e1483036b.tar.xz oslo-ebaa578351c9c6b47c2f28ef6d74451e1483036b.zip |
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
Diffstat (limited to 'openstack')
-rw-r--r-- | openstack/common/db/sqlalchemy/session.py | 23 |
1 files changed, 20 insertions, 3 deletions
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) |