[ZODB-Dev] Tracking down a freeze (deadlock?)

Dieter Maurer dieter at handshake.de
Thu Feb 24 16:57:07 EST 2005


Florent Guillaume wrote at 2005-2-24 12:25 +0100:
>>   File "/opt/zope/lib/python/ZODB/Connection.py", line 257, in _setDB
>>     self._flush_invalidations()
>>   File "/opt/zope/lib/python/ZODB/Connection.py", line 552, in
>> _flush_invalidations
>>     self._cache.invalidate(self._invalidated)
>>   File
>> "/appli/zeo/zeocli-192.168.106.6-8080/Products/DICOD/DICODMailingList.py",
>> line 125, in __del__
>>   File "/opt/zope/lib/python/ZODB/Connection.py", line 599, in setstate
>>     invalid = self._is_invalidated(obj)
>>   File "/opt/zope/lib/python/ZODB/Connection.py", line 617, in _is_invalidated
>>     self._inv_lock.acquire()
>
>Hm I think I can answer that one. A persistent object is not supposed to
>have a __del__ that accesses the ZODB right ? Otherwise, well, we see
>what happens.

On the other hand, it should not cause a deadlock.

It would not when "_inv_lock" were a reentrant lock.
I think, it could be (as "acquire" and "release" are not called
in different threads).

-- 
Dieter


More information about the ZODB-Dev mailing list