[Christian Zagrodnick]
the DB.open method makes me wonder how it works (http://svn.zope.org/
ZODB/trunk/src/ZODB/DB.py?rev=69551&view=auto)

It locks with self._a() and calls self._connectionMap which locks
too. I cannot imagine a way this could possibly work.

Look at __init__():

       x = threading.RLock()
       self._a = x.acquire
       self._r = x.release

That is, it's a reentrant lock.  See the Python docs for RLock().

I guess the lock should be released before the _connectionMap call?

No.

Interestingly both all the tests pass and ZODB works...

That was a good clue ;-)
_______________________________________________
For more information about ZODB, see the ZODB Wiki:
http://www.zope.org/Wikis/ZODB/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
http://mail.zope.org/mailman/listinfo/zodb-dev

Reply via email to