Hi
I still haven't resolved my rollback assert problem which happens
about once per month.
But I have gathered some tracebacks.
In all cases, it looks like Transaction.__getattr__ gets called at
places I don't understand.
Maybe tracebacks are corrupted?
If someone has a clue where to look at, it would be nice.
I don't understand very well what is the function of the
Transaction.__getattr__ method.
Thanks for your help.
File "/usr/lib/python2.5/site-packages/SQLObject-0.10.3-py2.5.egg/sqlobject/dbconnection.py",
line 866, in doInTransaction
conn = old_conn.transaction()
File "/usr/lib/python2.5/site-packages/SQLObject-0.10.3-py2.5.egg/sqlobject/dbconnection.py",
line 398, in transaction
return Transaction(self)
File "/usr/lib/python2.5/site-packages/SQLObject-0.10.3-py2.5.egg/sqlobject/dbconnection.py",
line 681, in __init__
self._connection = dbConnection.getConnection()
File "/usr/lib/python2.5/site-packages/SQLObject-0.10.3-py2.5.egg/sqlobject/dbconnection.py",
line 281, in getConnection
self._poolLock.release()
File "/usr/lib/python2.5/site-packages/SQLObject-0.10.3-py2.5.egg/sqlobject/dbconnection.py",
line 764, in __getattr__
self.assertActive()
File "/usr/lib/python2.5/site-packages/SQLObject-0.10.3-py2.5.egg/sqlobject/dbconnection.py",
line 688, in assertActive
assert not self._obsolete, "This transaction has already gone
through ROLLBACK; begin another transaction"
AssertionError: This transaction has already gone through ROLLBACK;
begin another transaction
Here getattr is called in self._poolLock.release() inside a DBAPI
method: getConnection
self is a DBAPI instance.
I don't see why the Transaction.__getattr__ gets called.
File "/usr/lib/python2.5/site-packages/SQLObject-0.10.3-py2.5.egg/sqlobject/dbconnection.py",
line 878, in doInTransaction
conn.commit(close=True)
File "/usr/lib/python2.5/site-packages/SQLObject-0.10.3-py2.5.egg/sqlobject/dbconnection.py",
line 729, in commit
if self._dbConnection.debug:
File "/usr/lib/python2.5/site-packages/SQLObject-0.10.3-py2.5.egg/sqlobject/dbconnection.py",
line 764, in __getattr__
self.assertActive()
File "/usr/lib/python2.5/site-packages/SQLObject-0.10.3-py2.5.egg/sqlobject/dbconnection.py",
line 688, in assertActive
assert not self._obsolete, "This transaction has already gone
through ROLLBACK; begin another transaction"
AssertionError: This transaction has already gone through ROLLBACK;
begin another transaction
here getattr is called in self._dbConnection.debug
self is a Transaction. Maybe _dbConnection doesn't exist anymore?
File "/usr/lib/python2.5/site-packages/SQLObject-0.10.2-py2.5.egg/sqlobject/dbconnection.py",
line 856, in doInTransaction
conn = old_conn.transaction()
File "/usr/lib/python2.5/site-packages/SQLObject-0.10.2-py2.5.egg/sqlobject/dbconnection.py",
line 754, in __getattr__
self.assertActive()
File "/usr/lib/python2.5/site-packages/SQLObject-0.10.2-py2.5.egg/sqlobject/dbconnection.py",
line 678, in assertActive
assert not self._obsolete, "This transaction has already gone
through ROLLBACK; begin another transaction"
AssertionError: This transaction has already gone through ROLLBACK;
begin another transaction
|