• Chris McDonough's avatar
    Merge from 2.7 branch. · b63a4b46
    Chris McDonough authored
    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.
    b63a4b46
Transience.py 24.8 KB