Commit 3ed56074 authored by Tres Seaver's avatar Tres Seaver

LP #142667: ensure _reader uses new cache in _resetCache.

parent 169b8e41
What's new on ZODB 3.7.3?
=========================
Release date: DD-MMM-YYYY
Connection
----------
- (3.7.3) Reset ``_cache`` on a connection's ``_reader`` object when
resetting the cache, to prevent reads from the old cache object, e.g.
during Zope2's auto-refresh of products.
(https://bugs.launchpad.net/zodb/+bug/142667).
What's new on ZODB 3.7.2?
=========================
Release date: 27-Sep-2007
ClientStorage
-------------
- (3.7.2) Fixed a serious bug that could cause client I/O to stop
(hang). This was accomonied by a critical log message along the
lines of: "RuntimeError: dictionary changed size during iteration".
What's new on ZODB 3.7.1?
=========================
Release date: 03-Jul-2007
Packaging
---------
......@@ -19,10 +48,6 @@ Packaging
ClientStorage
-------------
- (3.7.2) Fixed a serious bug that could cause client I/O to stop
(hang). This was accomonied by a critical log message along the
lines of: "RuntimeError: dictionary changed size during iteration".
- (3.7b4) Added logic to avoid spurious errors from the logging system
on exit.
......
......@@ -20,7 +20,7 @@ to application logic. ZODB includes features such as a plugable storage
interface, rich transaction support, and undo.
"""
VERSION = "3.7.2"
VERSION = "3.7.3dev"
# The (non-obvious!) choices for the Trove Development Status line:
# Development Status :: 5 - Production/Stable
......
......@@ -983,6 +983,8 @@ class Connection(ExportImport, object):
self._invalidatedCache = False
cache_size = self._cache.cache_size
self._cache = cache = PickleCache(self, cache_size)
if getattr(self, '_reader', None) is not None:
self._reader._cache = cache
##########################################################################
# Python protocol
......
......@@ -146,6 +146,14 @@ class ConnectionDotAdd(unittest.TestCase):
self.datamgr.tpc_finish(self.transaction)
self.assert_(obj._p_oid not in self.datamgr._storage._stored)
def check__resetCacheResetsReader(self):
# https://bugs.launchpad.net/zodb/+bug/142667
old_cache = self.datamgr._cache
self.datamgr._resetCache()
new_cache = self.datamgr._cache
self.failIf(new_cache is old_cache)
self.failUnless(self.datamgr._reader._cache is new_cache)
class UserMethodTests(unittest.TestCase):
# add isn't tested here, because there are a bunch of traditional
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment