#1535 closed defect (fixed)
trac-admin upgrade doesn't work in python 2.2
| Reported by: | xris | Owned by: | Christopher Lenz |
|---|---|---|---|
| Priority: | high | Milestone: | 0.9 |
| Component: | admin/console | Version: | devel |
| Severity: | blocker | Keywords: | |
| Cc: | tiger@… | Branch: | |
| Release Notes: | |||
| API Changes: | |||
| Internal Changes: | |||
Description
trying to upgrade past [1585] or so with python 2.2.. when I reach the point that I need to do a db upgrade, I get:
# trac-admin /var/www/trac/data/ upgrade
Upgrade failed: maximum recursion depth exceeded
Traceback (most recent call last):
File "/usr/lib/python2.2/site-packages/trac/scripts/admin.py", line 1018, in do_upgrade
curr = self.__env.get_version()
File "/usr/lib/python2.2/site-packages/trac/env.py", line 180, in get_version
cursor = cnx.cursor()
File "/usr/lib/python2.2/site-packages/trac/db.py", line 70, in cursor
cursor = self.cnx.cursor()
File "/usr/lib/python2.2/site-packages/trac/db.py", line 67, in __getattr__
return getattr(self.cnx, name)
File "/usr/lib/python2.2/site-packages/trac/db.py", line 67, in __getattr__
<<<snip>>>
File "/usr/lib/python2.2/site-packages/trac/db.py", line 67, in __getattr__
return getattr(self.cnx, name)
File "/usr/lib/python2.2/site-packages/trac/db.py", line 67, in __getattr__
Traceback (most recent call last):
File "/usr/bin/trac-admin", line 27, in ?
run(*sys.argv[1:])
File "/usr/lib/python2.2/site-packages/trac/scripts/admin.py", line 1075, in run
tracadm.docmd(command)
File "/usr/lib/python2.2/site-packages/trac/scripts/admin.py", line 65, in docmd
self.onecmd(cmd)
File "/usr/lib/python2.2/cmd.py", line 200, in onecmd
return func(arg)
File "/usr/lib/python2.2/site-packages/trac/scripts/admin.py", line 1033, in do_upgrade
traceback.print_exc()
File "/usr/lib/python2.2/traceback.py", line 210, in print_exc
print_exception(etype, value, tb, limit, file)
File "/usr/lib/python2.2/traceback.py", line 123, in print_exception
print_tb(tb, limit, file)
File "/usr/lib/python2.2/traceback.py", line 67, in print_tb
' File "%s", line %d, in %s' % (filename,lineno,name))
File "/usr/lib/python2.2/traceback.py", line 13, in _print
file.write(str+terminator)
Attachments (0)
Change History (12)
comment:1 by , 21 years ago
| Priority: | normal → high |
|---|---|
| Severity: | normal → blocker |
comment:2 by , 21 years ago
| Milestone: | → 0.9 |
|---|---|
| Owner: | changed from to |
comment:3 by , 21 years ago
| Cc: | added |
|---|
I rolled back my installation to last working revision [1585].
comment:4 by , 20 years ago
from IRC yesterday, in case someone else wants to look at this:
(10:29:27) matt_good: __getattr__ is a special function in Python that is used to look up attributes of an object (10:29:53) matt_good: but the part "self.cnx" is also calling __getattr__ to look up "cnx" (10:30:05) matt_good: so it just recurses
comment:5 by , 20 years ago
Well, I was a bit confused when I saw that at first. Actually __getattr__ is only called if the attribute isn't actually set on the object. In this case self.cnx is set in the contructor, so the fact that __getattr__ is being called recursively is a sign that the cnx has somehow been deleted from the object. I'm still not sure why this is happening (and unfortunately I haven't gotten SVN bindings installed for Python 2.2, so I haven't been able to reproduce this).
comment:6 by , 20 years ago
Well, I just went and applied all of the db updates manually, hoping that it'd get things to work.. Unfortunately, once the db updates apply (some with errors about them already being applied), trac still won't run:
Trac detected an internal error:
maximum recursion depth exceeded
Traceback (most recent call last):
File "/usr/lib/python2.2/site-packages/trac/web/cgi_frontend.py", line 103, in run
dispatch_request(os.getenv('PATH_INFO', ''), req, env)
File "/usr/lib/python2.2/site-packages/trac/web/main.py", line 393, in dispatch_request
authenticator = Authenticator(db, req, check_ip)
File "/usr/lib/python2.2/site-packages/trac/web/auth.py", line 49, in __init__
cursor = db.cursor()
File "/usr/lib/python2.2/site-packages/trac/db.py", line 70, in cursor
return IterableCursor(self.cnx.cursor())
File "/usr/lib/python2.2/site-packages/trac/db.py", line 67, in __getattr__
return getattr(self.cnx, name)
File "/usr/lib/python2.2/site-packages/trac/db.py", line 67, in __getattr__
return getattr(self.cnx, name)
... and so on and so forth into oblivion
comment:7 by , 20 years ago
cmlenz seems to have fixed the "upgrade" problem, but now there are other issues:
Traceback (innermost last):
File "csparse.c", line 293, in cs_parse_file()
File "neo_hdf.c", line 1896, in hdf_search_path()
NotFoundError: Path report.cs not found
Traceback (most recent call last):
File "/usr/lib/python2.2/site-packages/trac/web/cgi_frontend.py", line 103, in run
dispatch_request(os.getenv('PATH_INFO', ''), req, env)
File "/usr/lib/python2.2/site-packages/trac/web/main.py", line 421, in dispatch_request
dispatcher.dispatch(req)
File "/usr/lib/python2.2/site-packages/trac/web/main.py", line 291, in dispatch
req.display(template, content_type or 'text/html')
File "/usr/lib/python2.2/site-packages/trac/web/main.py", line 152, in display
data = self.hdf.render(template)
File "/usr/lib/python2.2/site-packages/trac/web/clearsilver.py", line 260, in render
template.parseFile(filename)
Error: Traceback (innermost last):
File "csparse.c", line 293, in cs_parse_file()
File "neo_hdf.c", line 1896, in hdf_search_path()
NotFoundError: Path report.cs not found
And on request from cmlenz in irc:
hdf {
loadpaths = ['/var/trac/web/templates', '/usr/share/trac/templates']
}
comment:8 by , 20 years ago
I've tried to do upgrade from [1585] to [1826]. Below errors I've got.
[tiger@bingo repos]$ sudo -u apache trac-admin ./ upgrade Exception exceptions.AttributeError: "type object 'object' has no attribute '__getattr__'" in <bound method PooledConnection.__del__ of <trac.db.PooledConnection object at 0xa1bd15c>> ignored Exception exceptions.AttributeError: "type object 'object' has no attribute '__getattr__'" in <bound method PooledConnection.__del__ of <trac.db.PooledConnection object at 0xa20f13c>> ignored Upgrade: Upgrading /var/repo/trac/poker to db version 13 Upgrade: Backup of old database saved in /var/repo/trac/poker/db/trac.db.10.bak Exception exceptions.AttributeError: "type object 'object' has no attribute '__getattr__'" in <bound method PooledConnection.__del__ of <trac.db.PooledConnection object at 0xa20f9e4>> ignored Exception exceptions.AttributeError: "type object 'object' has no attribute '__getattr__'" in <bound method PooledConnection.__del__ of <trac.db.PooledConnection object at 0xa1d833c>> ignored Exception exceptions.AttributeError: "type object 'object' has no attribute '__getattr__'" in <bound method PooledConnection.__del__ of <trac.db.PooledConnection object at 0xa2214c4>> ignored
This errors I've got accessing my Trac from the browser:
Oops...
Trac detected an internal error:
Traceback (innermost last):
File "csparse.c", line 293, in cs_parse_file()
File "neo_hdf.c", line 1896, in hdf_search_path()
NotFoundError: Path wiki.cs not found
Traceback (most recent call last):
File "/usr/lib/python2.2/site-packages/trac/web/cgi_frontend.py", line 103, in run
dispatch_request(os.getenv('PATH_INFO', ''), req, env)
File "/usr/lib/python2.2/site-packages/trac/web/main.py", line 421, in dispatch_request
dispatcher.dispatch(req)
File "/usr/lib/python2.2/site-packages/trac/web/main.py", line 291, in dispatch
req.display(template, content_type or 'text/html')
File "/usr/lib/python2.2/site-packages/trac/web/main.py", line 152, in display
data = self.hdf.render(template)
File "/usr/lib/python2.2/site-packages/trac/web/clearsilver.py", line 260, in render
template.parseFile(filename)
Error: Traceback (innermost last):
File "csparse.c", line 293, in cs_parse_file()
File "neo_hdf.c", line 1896, in hdf_search_path()
NotFoundError: Path wiki.cs not found
comment:9 by , 20 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
This latter error is fixed in [1845].
comment:10 by , 20 years ago
| Resolution: | fixed |
|---|---|
| Status: | closed → reopened |
I've tried [1845]. But still have following errors while upgrading db. Are they actually only related to python 2.2?
[tiger@bingo repos]$ sudo -u apache trac-admin ./ upgrade Exception exceptions.AttributeError: "type object 'object' has no attribute '__getattr__'" in <bound method PooledConnection.__del__ of <trac.db.PooledConnection object at 0x983ab24>> ignored Exception exceptions.AttributeError: "type object 'object' has no attribute '__getattr__'" in <bound method PooledConnection.__del__ of <trac.db.PooledConnection object at 0x989335c>> ignored Exception exceptions.AttributeError: "type object 'object' has no attribute '__getattr__'" in <bound method PooledConnection.__del__ of <trac.db.PooledConnection object at 0x9894d4c>> ignored Exception exceptions.AttributeError: "type object 'object' has no attribute '__getattr__'" in <bound method PooledConnection.__del__ of <trac.db.PooledConnection object at 0x9892c34>> ignored
comment:11 by , 20 years ago
| Resolution: | → fixed |
|---|---|
| Status: | reopened → closed |
Those are just warnings and not really related to this ticket. The main two issues raised here are fixed.
comment:12 by , 20 years ago
I'm not agree to you in the one point. I confirm that as soon as I upgraded server to python 2.3 (at last) everything become smooth. So I have to outline that currently project is incompatible with python 2.2.



I confirm issue on r1696. Can't perform trac-admin upgrade. trac-admin response is "Upgrade failed: maximum recursion depth exceeded"
Python 2.2.3