[Zope] Re: session variables in the presence of conflicts

Chris McDonough chrism at plope.com
Sun Nov 20 14:06:52 EST 2005


Sorry, I noticed in another email you said that you're using 2.0.9  
(which appears to be in beta) and I confirmed that the traceback  
matches that source.  The note in the product's CHANGES.txt about  
this is:

     Wrap queries with a lock to prevent multiple threads from using
     the connection simultaneously (this may or may not be happening).
     If transactional, then there is an additional transaction lock,
     acquired at the beginning of the transaction and released when
     either finished or aborted.

The last sentence is the meaningful one in your case.  I'm not sure  
if this is a bug fix but you may want to try 2.0.8 if you haven't  
already because it doesn't use a transaction lock (or any other  
lock).  It seems as if the logic in 2.0.9b to obtain the transaction  
lock fails to take some corner case into account, although it's not  
obvious from the code what that is.

On Nov 20, 2005, at 1:55 PM, Chris McDonough wrote:

> Hi Dennis,
>
> I notice that line 389 of db.py of the most recent ZMySQLDA (2.0.8)  
> doesn't match the traceback you show.  No mutex locking at all is  
> done in the 2.0.8 version of that module (or any other module in  
> that product).  Are you using an older version?
>
> - C
>
>
> On Nov 20, 2005, at 9:57 AM, Dennis Allison wrote:
>
>>
>> Florent,
>> There were, of course, tracebacks.  Any assist you can provide  
>> would be
>> appreciated.   -D
>>
>> ------
>> 2005-11-18T12:50:16 ERROR txn.3075 Error in tpc_abort() on manager  
>> <MultiObjectResourceAdapter for <Products.ZMySQLDA.db.DB instance  
>> at 0x450431cc> at 1190763820>
>> Traceback (most recent call last):
>>   File "/usr/local/src/zope/Zope2.8/lib/python/transaction/ 
>> _transaction.py", line 462, in _cleanup
>>     rm.tpc_abort(self)
>>   File "/usr/local/src/zope/Zope2.8/lib/python/transaction/ 
>> _transaction.py", line 548, in tpc_abort
>>     self.manager.tpc_abort(txn)
>>   File "/usr/local/src/zope/Zope2.8/lib/python/Shared/DC/ZRDB/ 
>> TM.py", line 64, in abort
>>     try: self._abort()
>>   File "/opt/zope/zproducts/standard/ZMySQLDA/db.py", line 389, in  
>> _abort
>>     self._tlock.release()
>> error: release unlocked lock
>> ------
>> 2005-11-18T12:50:16 ERROR txn.3075 Error in tpc_abort() on manager  
>> <MultiObjectResourceAdapter for <Products.ZMySQLDA.db.DB instance  
>> at 0x41487acc> at 1190774252>
>> Traceback (most recent call last):
>>   File "/usr/local/src/zope/Zope2.8/lib/python/transaction/ 
>> _transaction.py", line 462, in _cleanup
>>     rm.tpc_abort(self)
>>   File "/usr/local/src/zope/Zope2.8/lib/python/transaction/ 
>> _transaction.py", line 548, in tpc_abort
>>     self.manager.tpc_abort(txn)
>>   File "/usr/local/src/zope/Zope2.8/lib/python/Shared/DC/ZRDB/ 
>> TM.py", line 64, in abort
>>     try: self._abort()
>>   File "/opt/zope/zproducts/standard/ZMySQLDA/db.py", line 389, in  
>> _abort
>>     self._tlock.release()
>> error: release unlocked lock
>> ------
>> 2005-11-18T12:50:16 INFO ZODB conflict error at /courses/topics/ 
>> navigation_box (55 conflicts since startup at 2005-11-18T12:13:38)
>> ------
>> 2005-11-18T12:50:16 ERROR txn.3075 Failed to abort object:  
>> Surrogate oid=<object object at 0x4009d470>
>> Traceback (most recent call last):
>>   File "/usr/local/src/zope/Zope2.8/lib/python/transaction/ 
>> _transaction.py", line 562, in abort
>>     self.manager.abort(o, txn)
>>   File "/usr/local/src/zope/Zope2.8/lib/python/Shared/DC/ZRDB/ 
>> TM.py", line 64, in abort
>>     try: self._abort()
>>   File "/opt/zope/zproducts/standard/ZMySQLDA/db.py", line 389, in  
>> _abort
>>     self._tlock.release()
>> error: release unlocked lock
>> ------
>> 2005-11-18T12:50:16 ERROR txn.3075 Failed to abort resource  
>> manager: <MultiObjectResourceAdapter for <Products.ZMySQLDA.db.DB  
>> instance at 0x450431cc> at 1190763820>
>> Traceback (most recent call last):
>>   File "/usr/local/src/zope/Zope2.8/lib/python/transaction/ 
>> _transaction.py", line 489, in abort
>>     rm.abort(self)
>>   File "/usr/local/src/zope/Zope2.8/lib/python/transaction/ 
>> _transaction.py", line 562, in abort
>>     self.manager.abort(o, txn)
>>   File "/usr/local/src/zope/Zope2.8/lib/python/Shared/DC/ZRDB/ 
>> TM.py", line 64, in abort
>>     try: self._abort()
>>   File "/opt/zope/zproducts/standard/ZMySQLDA/db.py", line 389, in  
>> _abort
>>     self._tlock.release()
>> error: release unlocked lock
>> ------
>> 2005-11-18T12:50:16 ERROR txn.3075 Failed to abort object:  
>> Surrogate oid=<object object at 0x4009d470>
>> Traceback (most recent call last):
>>   File "/usr/local/src/zope/Zope2.8/lib/python/transaction/ 
>> _transaction.py", line 562, in abort
>>     self.manager.abort(o, txn)
>>   File "/usr/local/src/zope/Zope2.8/lib/python/Shared/DC/ZRDB/ 
>> TM.py", line 64, in abort
>>     try: self._abort()
>>   File "/opt/zope/zproducts/standard/ZMySQLDA/db.py", line 389, in  
>> _abort
>>     self._tlock.release()
>> error: release unlocked lock
>> ------
>> 2005-11-18T12:50:16 ERROR txn.3075 Failed to abort resource  
>> manager: <MultiObjectResourceAdapter for <Products.ZMySQLDA.db.DB  
>> instance at 0x41487acc> at 1190774252>
>> Traceback (most recent call last):
>>   File "/usr/local/src/zope/Zope2.8/lib/python/transaction/ 
>> _transaction.py", line 489, in abort
>>     rm.abort(self)
>>   File "/usr/local/src/zope/Zope2.8/lib/python/transaction/ 
>> _transaction.py", line 562, in abort
>>     self.manager.abort(o, txn)
>>   File "/usr/local/src/zope/Zope2.8/lib/python/Shared/DC/ZRDB/ 
>> TM.py", line 64, in abort
>>     try: self._abort()
>>   File "/opt/zope/zproducts/standard/ZMySQLDA/db.py", line 389, in  
>> _abort
>>     self._tlock.release()
>> error: release unlocked lock
>> ------
>>
>>
>> On Sat, 19 Nov 2005, Florent Guillaume wrote:
>>
>>> Dennis Allison wrote:
>>>> We are using MySQL but are fully transactional using innodb.
>>>>
>>>> The sort of problems we are seeing are (cruft removed) are  
>>>> things like:
>>>>
>>>> 2005-11-18T12:50:16 ERROR txn.3075 Error in tpc_abort() on manager
>>>> <MultiObjectResourceAdapter for <Products.ZMySQLDA.db.DB  
>>>> instance at
>>>> 0x450431cc> at 1190763820>
>>>
>>> There should be a traceback here, or if there's none you should  
>>> patch
>>> _transaction.py to make it produced. Seeing that traceback is  
>>> important
>>> and would point to an error somewhere in MySQLDA's code I expect.
>>>
>>>> 2005-11-18T12:50:16 ERROR txn.3075 Failed to abort resource  
>>>> manager:
>>>> <MultiObjectResourceAdapter for <Products.ZMySQLDA.db.DB  
>>>> instance at
>>>> 0x450431cc> at 1190763820>
>>>> 2005-11-18T12:50:16 ERROR txn.3075 Failed to abort object:  
>>>> Surrogate
>>>> oid=<object object at 0x4009d470>
>>>> 2005-11-18T12:50:16 ERROR txn.3075 Failed to abort resource  
>>>> manager:
>>>> <MultiObjectResourceAdapter for <Products.ZMySQLDA.db.DB  
>>>> instance at
>>>> 0x41487acc> at 1190774252>
>>>
>>> Same here, the traceback is important.
>>>
>>> Florent
>>>
>>>
>>
>> -- 
>>
>> _______________________________________________
>> Zope maillist  -  Zope at zope.org
>> http://mail.zope.org/mailman/listinfo/zope
>> **   No cross posts or HTML encoding!  **
>> (Related lists -
>>  http://mail.zope.org/mailman/listinfo/zope-announce
>>  http://mail.zope.org/mailman/listinfo/zope-dev )
>>
>



More information about the Zope mailing list