• Jim Fulton's avatar
    Merged cache fixes from 3.8 branch: · 100a2198
    Jim Fulton authored
    - The cache used an excessive amount of memory, causing applications
      with large caches to exhaust available memory.
    
    - Fixed a number of bugs in the handling of persistent ZEO caches:
    
    - Cache records are written in several steps.  If a process exits
        after writing begins and before it is finishes, the cache will be
        corrupt on restart.  The way records are writted was changed to
        make cache record updates atomic.
    
    - There was no lock file to prevent opening a cache multiple times
        at once, which would lead to corruption.  Persistent caches now
        use lock files, in the same way that file storages do.
    
    - A bug in the cache-opening logic led to cache failure in the
        unlikely event that a cache has no free blocks.
    100a2198
cache.py 22.7 KB