diff options
author | Jenkins <jenkins@review.openstack.org> | 2013-07-03 15:57:11 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2013-07-03 15:57:11 +0000 |
commit | 62d948a66b27ad2622a324bd9a070346f7b607d2 (patch) | |
tree | 6aa5a4ee11df773bd13002cc7ba92b428068de8d | |
parent | 214df21437066a7b7421ab568dfadbbbfb255758 (diff) | |
parent | 05e7a87b893aae0cb22ef85e282ada4979f9db9e (diff) | |
download | keystone-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.py | 30 |
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() |