[Zodb-checkins] SVN: ZODB/branches/3.4/ LP #142667: update _reader to use new cache in _resetCache.

Tres Seaver tseaver at palladion.com
Thu Oct 9 20:43:13 EDT 2008


Log message for revision 91949:
  LP #142667:  update _reader to use new cache in _resetCache.

Changed:
  U   ZODB/branches/3.4/NEWS.txt
  U   ZODB/branches/3.4/src/ZODB/Connection.py
  U   ZODB/branches/3.4/src/ZODB/tests/testConnection.py

-=-
Modified: ZODB/branches/3.4/NEWS.txt
===================================================================
--- ZODB/branches/3.4/NEWS.txt	2008-10-10 00:35:06 UTC (rev 91948)
+++ ZODB/branches/3.4/NEWS.txt	2008-10-10 00:43:13 UTC (rev 91949)
@@ -1,3 +1,15 @@
+What's new in ZODB3 3.4.5?
+==========================
+Release date: 09-Oct-2008 (internal release for Zope 2.8.10)
+
+Connection
+----------
+
+- (3.4.5) 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 in ZODB3 3.4.4?
 ==========================
 Release date: 14-Jul-2006 (internal release for Zope 2.8.8)
@@ -6,8 +18,8 @@
 -----------
 
 - (3.4.4b1) DemoStorage was unable to wrap base storages who did not have
-            an '_oid' attribute:  most notably, ZEO.ClientStorage
-            (http://www.zope.org/Collectors/Zope/2016).
+  an '_oid' attribute:  most notably, ZEO.ClientStorage
+  (http://www.zope.org/Collectors/Zope/2016).
 
 What's new in ZODB3 3.4.3?
 ==========================

Modified: ZODB/branches/3.4/src/ZODB/Connection.py
===================================================================
--- ZODB/branches/3.4/src/ZODB/Connection.py	2008-10-10 00:35:06 UTC (rev 91948)
+++ ZODB/branches/3.4/src/ZODB/Connection.py	2008-10-10 00:43:13 UTC (rev 91949)
@@ -928,6 +928,8 @@
         self._invalidated.clear()
         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

Modified: ZODB/branches/3.4/src/ZODB/tests/testConnection.py
===================================================================
--- ZODB/branches/3.4/src/ZODB/tests/testConnection.py	2008-10-10 00:35:06 UTC (rev 91948)
+++ ZODB/branches/3.4/src/ZODB/tests/testConnection.py	2008-10-10 00:43:13 UTC (rev 91949)
@@ -140,6 +140,14 @@
         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



More information about the Zodb-checkins mailing list