Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Cloud:OpenStack:Icehouse
openstack-nova-doc
0001-Start-ping-listener-also-for-postgresql.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-Start-ping-listener-also-for-postgresql.patch of Package openstack-nova-doc
Index: nova/openstack/common/db/sqlalchemy/session.py =================================================================== --- nova/openstack/common/db/sqlalchemy/session.py.orig +++ nova/openstack/common/db/sqlalchemy/session.py @@ -492,7 +492,7 @@ def _thread_yield(dbapi_con, con_record) def _ping_listener(engine, dbapi_conn, connection_rec, connection_proxy): - """Ensures that MySQL and DB2 connections are alive. + """Ensures that MySQL, PostgreSQL or DB2 connections are alive. Borrowed from: http://groups.google.com/group/sqlalchemy/msg/a4ce563d802c929f @@ -508,6 +508,15 @@ def _ping_listener(engine, dbapi_conn, c if engine.dialect.is_disconnect(ex, dbapi_conn, cursor): msg = _LW('Database server has gone away: %s') % ex LOG.warning(msg) + + # if the database server has gone away, all connections in the pool + # have become invalid and we can safely close all of them here, + # rather than waste time on checking of every single connection + engine.dispose() + + # this will be handled by SQLAlchemy and will force it to create + # a new connection and retry the original action + raise sqla_exc.DisconnectionError(msg) else: raise @@ -629,7 +638,7 @@ def create_engine(sql_connection, sqlite sqlalchemy.event.listen(engine, 'checkin', _thread_yield) - if engine.name in ['mysql', 'ibm_db_sa']: + if engine.name in ('ibm_db_sa', 'mysql', 'postgresql'): ping_callback = functools.partial(_ping_listener, engine) sqlalchemy.event.listen(engine, 'checkout', ping_callback) if engine.name == 'mysql':
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor