I'm pleased to announce the release of ZODB 3.2.4c1. This corresponds to the ZODB (and ZEO) that we intend to ship with Zope 2.7.3.
You can download a source tarball or Windows installer from:
3.2.4c1 incorporates several small bugfixes, and one crucial new behavior: it's incorrect to attempt to close a connection when objects from that connection are still in a modified state. When an application modifies, or creates, a persistent object, it should always abort() or commit() the transaction before closing the connection. However, ZODB didn't enforce this, and applications that closed a connection with pending modifications could get into catastrophic trouble as a result. For example, it was easy to create dangling references in the database this way (references to objects that don't exist, resulting in POSKeyError upon an attempt to load them). ZODB 3.2.4c1 raises the new ConnectionStateError if an attempt to cloase a connection with pending modifications is made.
See the news file for details:
The intent is that 3.2.4c1 will be released again as 3.2.4 (final) shortly before the Zope 2.7.3 release.
Note that ZODB 3.2.4c1 does not support Zope 2.7.2, because the Zope 2.7.2 publishing subsystem is an example of application code that didn't always finish a transaction before closing connections. ZODB 3.2.4c1 can be used with the current Zope Zope-2_7-branch branch.
Note that ZODB 3.2.4c1 does not support Zope X3 (Zope 3 requires ZODB 3.3 -- as will Zope 2.8).