We have made a beta release of ZODB 3.1.1 and ZEO 2.0.1. The primary change is a fix that allows transactions with multiple databases to run without deadlock.
These release will correspond exactly to Zope 2.6.1b1, which will also be released today. See http://www.zope.org/Products/StandaloneZODB http://www.zope.org/Products/ZEO Zope developers who have written customer data managers (aka _p_jars) should be sure to test this release. The deadlock prevention code changes the order in which data managers are invokved and prevents new data managers from registering after a transaction has begun. I've include the summary of changes below. Jeremy What's new in ZODB3 3.1.1? ========================== Release date: 10-Dev-2002 It was possible for earlier versions of ZODB to deadlock when using multiple storages. If multiple transactions committed concurrently and both transactions involved two or more shared storages, deadlock was possible. This problem has been fixed by introducing a sortKey() method to the transaction and storage APIs that is used to define an ordering on transaction participants. This solution will prevent deadlocks provided that all transaction participants that use locks define a valid sortKey() method. A warning is raised if a participant does not define sortKey(). For backwards compatibility, BaseStorage provides a sortKey() that uses __name__. Added code to ThreadedAsync/LoopCallback.py to work around a bug in asyncore.py: a handled signal can cause unwanted reads to happen. A bug in FileStorage related to object uncreation was fixed. If an a transaction that created an object was undone, FileStorage could write a bogus data record header that could lead to strange errors if the object was loaded. An attempt to load an uncreated object now raises KeyError, as expected. The restore() implementation in FileStorage wrote incorrect backpointers for a few corner cases involving versions and undo. It also failed if the backpointer pointed to a record that was before the pack time. These specific bugs have been fixed and new test cases were added to cover them. A bug was fixed in conflict resolution that raised a NameError when a class involved in a conflict could not be loaded. The bug did not affect correctness, but prevent ZODB from caching the fact that the class was unloadable. A related bug prevented spurious AttributeErrors when a class could not be loaded. It was also fixed. The script Tools/zeopack.py was fixed to work with ZEO 2. It was untested and had two silly bugs. Some C extensions included standard header files before including Python.h, which is not allowed. They now include Python.h first, which eliminates compiler warnings in certain configurations. ZEO 2.0.1 (2002/12/10) The changes since the ZEO 2.0 release are: - The logging code for client connection was improved in several ways. In particular, client connection and disconnection messages include the server's address. - ClientCache.py: make some functions into methods; include the storage name in all log messages; append the storage name to the trace filename. - zrpc/trigger.py: in handle_read() (both versions!), catch socket errors from the recv() call and return early in that case. _______________________________________________ Zope-Dev maillist - [EMAIL PROTECTED] http://lists.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://lists.zope.org/mailman/listinfo/zope-announce http://lists.zope.org/mailman/listinfo/zope )