summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-07-03 15:57:11 +0000
committerGerrit Code Review <review@openstack.org>2013-07-03 15:57:11 +0000
commit62d948a66b27ad2622a324bd9a070346f7b607d2 (patch)
tree6aa5a4ee11df773bd13002cc7ba92b428068de8d
parent214df21437066a7b7421ab568dfadbbbfb255758 (diff)
parent05e7a87b893aae0cb22ef85e282ada4979f9db9e (diff)
downloadkeystone-62d948a66b27ad2622a324bd9a070346f7b607d2.tar.gz
keystone-62d948a66b27ad2622a324bd9a070346f7b607d2.tar.xz
keystone-62d948a66b27ad2622a324bd9a070346f7b607d2.zip
Merge "Use event.listen() instead of deprecated listeners kwarg"
-rw-r--r--keystone/common/sql/core.py30
1 files changed, 15 insertions, 15 deletions
diff --git a/keystone/common/sql/core.py b/keystone/common/sql/core.py
index e1bd138e..d75c73a8 100644
--- a/keystone/common/sql/core.py
+++ b/keystone/common/sql/core.py
@@ -176,8 +176,7 @@ class DictBase(object):
#return local.iteritems()
-class MySQLPingListener(object):
-
+def mysql_on_checkout(dbapi_conn, connection_rec, connection_proxy):
"""Ensures that MySQL connections checked out of the pool are alive.
Borrowed from:
@@ -192,16 +191,14 @@ class MySQLPingListener(object):
from http://dev.mysql.com/doc/refman/5.6/en/error-messages-client.html
"""
-
- def checkout(self, dbapi_con, con_record, con_proxy):
- try:
- dbapi_con.cursor().execute('select 1')
- except dbapi_con.OperationalError as e:
- if e.args[0] in (2006, 2013, 2014, 2045, 2055):
- logging.warn(_('Got mysql server has gone away: %s'), e)
- raise DisconnectionError("Database server went away")
- else:
- raise
+ try:
+ dbapi_conn.cursor().execute('select 1')
+ except dbapi_conn.OperationalError as e:
+ if e.args[0] in (2006, 2013, 2014, 2045, 2055):
+ logging.warn(_('Got mysql server has gone away: %s'), e)
+ raise DisconnectionError("Database server went away")
+ else:
+ raise
# Backends
@@ -235,10 +232,13 @@ class Base(object):
if 'sqlite' in connection_dict.drivername:
engine_config['poolclass'] = sqlalchemy.pool.StaticPool
- elif 'mysql' in connection_dict.drivername:
- engine_config['listeners'] = [MySQLPingListener()]
- return sql.create_engine(CONF.sql.connection, **engine_config)
+ engine = sql.create_engine(CONF.sql.connection, **engine_config)
+
+ if engine.name == 'mysql':
+ sql.event.listen(engine, 'checkout', mysql_on_checkout)
+
+ return engine
if not allow_global_engine:
return new_engine()