Merge from 2.7 branch.
New "Transience" implementation. This implementation offers no new features, but is is vastly simpler, which makes it easier to maintain. The older version used all sorts of (questionable) tricks to attempt to avoid conflicts and to improve performance, such as using Python Queue-module queues to store action lists, using an index to quickly look up which "bucket" a transient object was stored within and several other persistent objects which attempted to keep pointers into the data. The older version also had a lot of "voodoo" code in it which papered over problems that was apparenly caused by its complexity. This code is now removed/replaced and the implementation is fairly straight- forward. The newer version is probably much slower (due to the lack of an index, it needs to scan all "current" buckets to attempt to find a value), but it operates reliably under high load. This implementation removes backwards compatibility support for transient object containers persisted via the Zope 2.5.X implementation. It is possible to use it against instances created in Zope 2.6.X and better, and it is possible after using it against a database created under one of these flavors to move back to an "older" Zope in this range, although it is likely that data in the TOC will be silently lost when this is done.
Showing
Please register or sign in to comment