Merge lp:~florent.x/openobject-server/6.1-bug-905257-fix-reconnect into lp:openobject-server/6.1

Proposed by Florent
Status: Rejected
Rejected by: Olivier Dony (Odoo)
Proposed branch: lp:~florent.x/openobject-server/6.1-bug-905257-fix-reconnect
Merge into: lp:openobject-server/6.1
Diff against target: 32 lines (+14/-4)
1 file modified
openerp/sql_db.py (+14/-4)
To merge this branch: bzr merge lp:~florent.x/openobject-server/6.1-bug-905257-fix-reconnect
Reviewer Review Type Date Requested Status
OpenERP Core Team Pending
Review via email: mp+132162@code.launchpad.net

Description of the change

This is probably safe to backport in 6.1 branch.

To post a comment you must log in.
Revision history for this message
Olivier Dony (Odoo) (odo-openerp) wrote :

Unmerged revisions

4297. By Florent

[FIX] silently discard closed connection when DB server is restarted.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'openerp/sql_db.py'
2--- openerp/sql_db.py 2012-02-06 20:31:51 +0000
3+++ openerp/sql_db.py 2012-10-30 16:34:22 +0000
4@@ -170,15 +170,25 @@
5 # see also the docstring of Cursor.
6 self._serialized = serialized
7
8- self._cnx = pool.borrow(dsn(dbname))
9- self._obj = self._cnx.cursor(cursor_factory=psycopg1cursor)
10 if self.sql_log:
11 self.__caller = frame_codeinfo(currentframe(),2)
12 else:
13 self.__caller = False
14- self.__closed = False # real initialisation value
15- self.autocommit(False)
16 self.__closer = False
17+ # Ensure connection if the DB server has restarted
18+ for idx in xrange(pool._maxconn):
19+ self._cnx = pool.borrow(dsn(dbname))
20+ self._obj = self._cnx.cursor(cursor_factory=psycopg1cursor)
21+ self.__closed = False # real initialisation value
22+ try:
23+ self.autocommit(False)
24+ except psycopg2.OperationalError:
25+ self.__closed = True
26+ if not self._cnx.closed:
27+ raise
28+ # The closed connection will be discarded from the pool
29+ else:
30+ break
31
32 self._default_log_exceptions = True
33