Opened 14 years ago
Closed 14 years ago
#8854 closed defect (fixed)
'Environment' object has no attribute 'get_read_db'
| Reported by: | anonymous | Owned by: | Russ Tyndall |
|---|---|---|---|
| Priority: | highest | Component: | TimingAndEstimationPlugin |
| Severity: | blocker | Keywords: | |
| Cc: | Russ Tyndall | Trac Release: | 0.12 |
Description (last modified by )
hi,
after installing 0.12 version in Ubuntu Linux 10.04.1 and enabling it in the admin section, I ran the trac-admin command:
trac-admin /var/local/lib/trac/git-Development upgrade
and I got this reply:
----
Traceback (most recent call last): File "/usr/lib/python2.6/dist-packages/trac/web/api.py", line 376, in send_error 'text/html') File "/usr/lib/python2.6/dist-packages/trac/web/chrome.py", line 745, in render_template stream |= self._filter_stream(req, method, filename, stream, data) File "/usr/lib/pymodules/python2.6/genshi/core.py", line 128, in __or__ return Stream(_ensure(function(self)), serializer=self.serializer) File "/usr/lib/python2.6/dist-packages/trac/web/chrome.py", line 848, in inner data) File "/usr/local/lib/python2.6/dist-packages/timingandestimationplugin-1.1.4-py2.6.egg/timingandestimationplugin/tande_filters.py", line 115, in filter_stream ).apply(FilterTransformation(RowFilter(self))) File "/usr/local/lib/python2.6/dist-packages/timingandestimationplugin-1.1.4-py2.6.egg/timingandestimationplugin/tande_filters.py", line 39, in __init__ rows = dbhelper.get_all(comp.env, "SELECT id FROM custom_report")[1] File "/usr/local/lib/python2.6/dist-packages/timingandestimationplugin-1.1.4-py2.6.egg/timingandestimationplugin/dbhelper.py", line 4, in get_all db = env.get_read_db() AttributeError: 'Environment' object has no attribute 'get_read_db' ----
Now I can't access TRAC at all, it seems broken
what the ?
Attachments (0)
Change History (10)
comment:1 Changed 14 years ago by
comment:2 Changed 14 years ago by
| Description: | modified (diff) |
|---|
Note that the errors are coming from the TimingAndEstimationPlugin.
comment:3 Changed 14 years ago by
| Cc: | Russ Tyndall added; anonymous removed |
|---|
comment:4 Changed 14 years ago by
| Component: | TracJsGanttPlugin → TimingAndEstimationPlugin |
|---|---|
| Owner: | changed from Chris Nelson to Russ Tyndall |
comment:5 follow-up: 6 Changed 14 years ago by
| Status: | new → assigned |
|---|
The timingandestimationplugin is fairly well tested on trac 12, so it is interesting you are getting this error. Also, the environment really should have a get_read_db function on it. This implies to me that some part of your upgrade did not go quite according to plan. It almost seems like it is trying to load an earlier version of trac.
If you su to the user running the webserver (www-data), can you connect to the database in python
import trac trac.__version__ # verify that this returns a trac 12 version >> '0.12.3dev-r10639' # verify you can connect to the database from python import trac.env e = trac.env.Environment('/var/trac/test') # enter your trac instance directory db = e.get_read_db() cur = db.cursor() cur.execute("SELECT 1") data = cur.fetchone()
Please let me know if this helps resolve your issues, if not we can dig further.
Cheers, Russ
comment:6 follow-up: 7 Changed 14 years ago by
I have a similar issue as the OP. I tried the steps you outlined and it failed at the db = e.get_read_db(). Output is below:
>>> import trac
>>> trac.__version__
'0.12.2'
>>> import trac.env
>>> e = trac.env.Environment('/trac/myproject')
>>> db = e.get_read_db()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.7/site-packages/trac/env.py", line 340, in get_read_db
return get_read_db(self)
File "/usr/lib/python2.7/site-packages/trac/db/api.py", line 90, in get_read_db
return _transaction_local.db or DatabaseManager(env).get_connection()
File "/usr/lib/python2.7/site-packages/trac/db/api.py", line 152, in get_connection
return self._cnx_pool.get_cnx(self.timeout or None)
File "/usr/lib/python2.7/site-packages/trac/db/pool.py", line 226, in get_cnx
return _backend.get_cnx(self._connector, self._kwargs, timeout)
File "/usr/lib/python2.7/site-packages/trac/db/pool.py", line 146, in get_cnx
raise TimeoutError(errmsg)
trac.db.pool.TimeoutError: Unable to get database connection within 0 seconds. (TracError(<babel.support.LazyProxy object at 0x19f8280>,))
I'm using a MySQL database as the data storage for the trac instance and the site itself is live with some other plugins working.
Replying to bobbysmith007:
The timingandestimationplugin is fairly well tested on trac 12, so it is interesting you are getting this error. Also, the environment really should have a get_read_db function on it. This implies to me that some part of your upgrade did not go quite according to plan. It almost seems like it is trying to load an earlier version of trac.
If you
suto the user running the webserver (www-data), can you connect to the database in python
import trac trac.__version__ # verify that this returns a trac 12 version >> '0.12.3dev-r10639' # verify you can connect to the database from python import trac.env e = trac.env.Environment('/var/trac/test') # enter your trac instance directory db = e.get_read_db() cur = db.cursor() cur.execute("SELECT 1") data = cur.fetchone()
Please let me know if this helps resolve your issues, if not we can dig further.
Cheers, Russ
comment:7 Changed 14 years ago by
Replying to scarabx@gmail.com:
I have a similar issue as the OP. I tried the steps you outlined and it failed at the db = e.get_read_db(). Output is below: trac.db.pool.TimeoutError: Unable to get database connection within 0 seconds. (TracError(<babel.support.LazyProxy object at 0x19f8280>,))
I'm using a MySQL database as the data storage for the trac instance and the site itself is live with some other plugins working.
This is actually a different error, caused by being unable to connect to the database. It sounds like you might have something wrong in configuration (eg, permissions on trac.ini are wrong and it cannot read your database user and password, or something similar). If you cannot get_read_db, I dont think it is related to this plugin, other than that this plugin calls get_read_db. Does disabling the plugin fix the problem? It is possible that TimingAndEstimationPlugin somehow exacerbates an existing problem in some setups I suppose, though it does seem to work fine for many people.
I also see many related trac errors, t:#9111 ,t:#9916, t:#10024.
Please let me know if you are still experiencing the problem, after checking for answers there.
Also I will need the pertinent version numbers from the trac about page and your database backend versions to even begin to debug these issues.
- Please verify that your webserver user can read your trac.ini - this leads to many spurious errors in trac12
comment:8 follow-up: 9 Changed 14 years ago by
Ok, so I restarted the MySQL server and tried the diagnostic code and it worked. After that, I enabled the TimingAndEstimationPlugin (all features), tried a "trac-admin <proj> upgrade", and got the following:
Timing and Estimation needs an upgrade Upgrading Database Creating bill_date table Upgrading reports /usr/lib/python2.7/site-packages/trac/db/util.py:66: Warning: Some non-transactional changed tables couldn't be rolled back return self.cursor.execute(sql) Upgrading fields Upgrading usermanual Done Upgrading Upgrade done. You may want to upgrade the Trac documentation now by running: trac-admin <myproj> wiki upgrade
After getting this, I refreshed the trac site in the browser and got the connection timeout error again (see below):
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/trac/web/api.py", line 440, in send_error
data, 'text/html')
File "/usr/lib/python2.7/site-packages/trac/web/chrome.py", line 827, in render_template
message = req.session.pop('chrome.%s.%d' % (type_, i))
File "/usr/lib/python2.7/site-packages/trac/web/api.py", line 216, in __getattr__
value = self.callbacks[name](self)
File "/usr/lib/python2.7/site-packages/trac/web/main.py", line 300, in _get_session
return Session(self.env, req)
File "/usr/lib/python2.7/site-packages/trac/web/session.py", line 192, in __init__
if req.authname == 'anonymous':
File "/usr/lib/python2.7/site-packages/trac/web/api.py", line 216, in __getattr__
value = self.callbacks[name](self)
File "/usr/lib/python2.7/site-packages/trac/web/main.py", line 159, in authenticate
authname = authenticator.authenticate(req)
File "/usr/lib/python2.7/site-packages/trac/web/auth.py", line 83, in authenticate
authname = self._get_name_for_cookie(req, req.incookie['trac_auth'])
File "/usr/lib/python2.7/site-packages/trac/web/auth.py", line 212, in _get_name_for_cookie
db = self.env.get_db_cnx()
File "/usr/lib/python2.7/site-packages/trac/env.py", line 328, in get_db_cnx
return get_read_db(self)
File "/usr/lib/python2.7/site-packages/trac/db/api.py", line 90, in get_read_db
return _transaction_local.db or DatabaseManager(env).get_connection()
File "/usr/lib/python2.7/site-packages/trac/db/api.py", line 152, in get_connection
return self._cnx_pool.get_cnx(self.timeout or None)
File "/usr/lib/python2.7/site-packages/trac/db/pool.py", line 226, in get_cnx
return _backend.get_cnx(self._connector, self._kwargs, timeout)
File "/usr/lib/python2.7/site-packages/trac/db/pool.py", line 146, in get_cnx
raise TimeoutError(errmsg)
TimeoutError: Unable to get database connection within 0 seconds. (TracError(<babel.support.LazyProxy object at 0x7fe1d6e089b0>,))
It looks like there is definitely something going on with the connection pools. I restarted both Apache and MySQL after this error, refreshed the trac project and same error as above which leaves the project in an unusable state.
System Info:
System Information
Trac 0.12.2
Babel 0.9.5
Docutils 0.7
Genshi 0.6
GIT 1.7.3.4
mod_wsgi 3.3 (WSGIProcessGroup WSGIApplicationGroup %{GLOBAL})
MySQL server: "5.1.53", client: "5.1.53", thread-safe: 1
MySQLdb 1.2.3
Pygments 1.3.1
Python 2.7 (r27:82500, Aug 07 2010, 16:54:59) [GCC]
pytz 2010h
setuptools 0.6c12
Subversion 1.6.17 (r1128011)
jQuery: 1.4.2
Installed Plugins
IniAdmin 0.2
NavAdd 0.1
timingandestimationplugin 1.1.6b
TracAccess 0.1
TracAccountManager 0.3dev-r10380
TracGit 0.12.0.2dev-r7757
TracIniAdminPanel 0.81beta
TracNewsFlash 1.0.1
TracProtected 2.1.1
TracTocMacro 11.0.0.3
worklog 0.1
comment:9 follow-up: 10 Changed 14 years ago by
Alrite, problem solved. Hit me with the dumb stick!
Problem was that the trac.ini file was not readable by the user the server is running as. Somewhere along the way I must have changed the perms.
Thanks for all the help!
comment:10 Changed 14 years ago by
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
Replying to scarabx@gmail.com:
Problem was that the trac.ini file was not readable by the user the server is running as. Somewhere along the way I must have changed the perms.
This has far and away been the most reported bug since the release of trac 12. I think they have already fixed the error message in trac 13. (At least there are patch suggestions to do so).
Glad we got it fixed, If anonymous reporter comes back and has more questions feel free to reopen.
Russ



I've even removed it from the ini file, and this message still persists