[FIX] sql_db: immediately remove the connections from the pool when detected to be dead
lp bug: https://launchpad.net/bugs/905257 fixed bzr revid: odo@openerp.com-20130216011831-5ehi02j5nj6shh8n
This commit is contained in:
parent
547372ef94
commit
bbb4f105dc
|
@ -412,15 +412,15 @@ class ConnectionPool(object):
|
||||||
|
|
||||||
for i, (cnx, used) in enumerate(self._connections):
|
for i, (cnx, used) in enumerate(self._connections):
|
||||||
if not used and dsn_are_equals(cnx.dsn, dsn):
|
if not used and dsn_are_equals(cnx.dsn, dsn):
|
||||||
|
self._connections.pop(i)
|
||||||
try:
|
try:
|
||||||
cnx.reset()
|
cnx.reset()
|
||||||
except psycopg2.OperationalError:
|
except psycopg2.OperationalError:
|
||||||
self._debug('Cannot reset connection at index %d: %r', i, cnx.dsn)
|
self._debug('Cannot reset connection at index %d: %r, removing it', i, cnx.dsn)
|
||||||
# psycopg2 2.4.4 and earlier do not allow closing a closed connection
|
# psycopg2 2.4.4 and earlier do not allow closing a closed connection
|
||||||
if not cnx.closed:
|
if not cnx.closed:
|
||||||
cnx.close()
|
cnx.close()
|
||||||
continue
|
continue
|
||||||
self._connections.pop(i)
|
|
||||||
self._connections.append((cnx, True))
|
self._connections.append((cnx, True))
|
||||||
self._debug('Existing connection found at index %d', i)
|
self._debug('Existing connection found at index %d', i)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue