Ticket #4984 (new defect)
trac/mod_python doesn't reconnect to postgresql after db restart
| Reported by: | andrewdied@… | Owned by: | jonas |
|---|---|---|---|
| Priority: | normal | Milestone: | 0.11.3 |
| Component: | general | Version: | 0.10.3 |
| Severity: | normal | Keywords: | postgresql |
| Cc: | amalaev@… |
Description
This may be a reopening of #3394. I am using trac 0.10.3, python 2.5, apache 2.2.3, Suse 10.2, mod_python 3.2.10, postgresql 8.1.5, Pypgsql 2.5.1.
If I restart postgres while apache/trac is running, trac does not automatically reconnect once the database is back up.
Steps to reproduce:
- Have a running apache/mod_python/trac environment.
- Restart postgres, like "sudo /etc/init.d/postgres restart"
- Try to run a report, like http://example.com/trac/instancename/report/3
Expected results:
- The page would take slightly longer to display as trac reconnected to the database. Alternately, See one error message telling the user to reload the page, then trac would function normally.
Actual results: The on-screen oops message is:
Python Traceback
Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/trac/web/main.py", line 387, in dispatch_request
dispatcher.dispatch(req)
File "/usr/lib/python2.5/site-packages/trac/web/main.py", line 183, in dispatch
req.perm = PermissionCache(self.env, req.authname)
File "/usr/lib/python2.5/site-packages/trac/perm.py", line 263, in __init__
self.perms = PermissionSystem(env).get_user_permissions(username)
File "/usr/lib/python2.5/site-packages/trac/perm.py", line 227, in get_user_permissions
for perm in self.store.get_user_permissions(username):
File "/usr/lib/python2.5/site-packages/trac/perm.py", line 110, in get_user_permissions
cursor = db.cursor()
File "/usr/lib/python2.5/site-packages/trac/db/util.py", line 78, in cursor
return IterableCursor(self.cnx.cursor())
File "/usr/lib/python2.5/site-packages/trac/db/util.py", line 78, in cursor
return IterableCursor(self.cnx.cursor())
File "/usr/local/lib/python2.5/site-packages/pyPgSQL/PgSQL.py", line 2599, in cursor
return Cursor(self, name, isRefCursor)
File "/usr/local/lib/python2.5/site-packages/pyPgSQL/PgSQL.py", line 2718, in __init__
self.conn._Connection__setupTransaction()
File "/usr/local/lib/python2.5/site-packages/pyPgSQL/PgSQL.py", line 2510, in __setupTransaction
self.conn.query("BEGIN WORK")
OperationalError: FATAL: terminating connection due to administrator command
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
In the trac log file:
2007-03-20 08:11:21,499 Trac[main] ERROR: FATAL: terminating connection due to administrator command
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/trac/web/main.py", line 387, in dispatch_request
dispatcher.dispatch(req)
File "/usr/lib/python2.5/site-packages/trac/web/main.py", line 183, in dispatch
req.perm = PermissionCache(self.env, req.authname)
File "/usr/lib/python2.5/site-packages/trac/perm.py", line 263, in __init__
self.perms = PermissionSystem(env).get_user_permissions(username)
File "/usr/lib/python2.5/site-packages/trac/perm.py", line 227, in get_user_permissions
for perm in self.store.get_user_permissions(username):
File "/usr/lib/python2.5/site-packages/trac/perm.py", line 110, in get_user_permissions
cursor = db.cursor()
File "/usr/lib/python2.5/site-packages/trac/db/util.py", line 78, in cursor
return IterableCursor(self.cnx.cursor())
File "/usr/lib/python2.5/site-packages/trac/db/util.py", line 78, in cursor
return IterableCursor(self.cnx.cursor())
File "/usr/local/lib/python2.5/site-packages/pyPgSQL/PgSQL.py", line 2599, in cursor
return Cursor(self, name, isRefCursor)
File "/usr/local/lib/python2.5/site-packages/pyPgSQL/PgSQL.py", line 2718, in __init__
self.conn._Connection__setupTransaction()
File "/usr/local/lib/python2.5/site-packages/pyPgSQL/PgSQL.py", line 2510, in __setupTransaction
self.conn.query("BEGIN WORK")
OperationalError: FATAL: terminating connection due to administrator command
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
Attachments
Change History
Note: See
TracTickets for help on using
tickets.


