From 19a001f339681dc36d4fb97ad6d528e80fad517d Mon Sep 17 00:00:00 2001 From: Shane Hathaway <shane@hathawaymix.org> Date: Tue, 14 Jan 2003 15:20:22 +0000 Subject: [PATCH] Fixed the _resetCache() bug. The garbage collection attributes weren't being updated, which resulted in one whole cache being kept for no reason. --- src/ZODB/Connection.py | 5 +++-- src/ZODB/tests/testZODB.py | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/ZODB/Connection.py b/src/ZODB/Connection.py index c738339e..fbf53857 100644 --- a/src/ZODB/Connection.py +++ b/src/ZODB/Connection.py @@ -13,7 +13,7 @@ ############################################################################## """Database connection support -$Id: Connection.py,v 1.80 2002/12/03 18:36:29 jeremy Exp $""" +$Id: Connection.py,v 1.81 2003/01/14 15:20:21 shane Exp $""" from cPickleCache import PickleCache from POSException import ConflictError, ReadConflictError @@ -217,7 +217,8 @@ class Connection(ExportImport.ExportImport): self._code_timestamp = global_code_timestamp self._invalidated.clear() orig_cache = self._cache - self._cache = PickleCache(self, orig_cache.cache_size) + self._cache = cache = PickleCache(self, orig_cache.cache_size) + self._incrgc = self.cacheGC = cache.incrgc def abort(self, object, transaction): """Abort the object in the transaction. diff --git a/src/ZODB/tests/testZODB.py b/src/ZODB/tests/testZODB.py index e9afe945..4719aee3 100644 --- a/src/ZODB/tests/testZODB.py +++ b/src/ZODB/tests/testZODB.py @@ -117,6 +117,21 @@ class ZODBTests(unittest.TestCase, ExportImportTests): self._db.abortVersion("version") get_transaction().commit() + def checkResetCache(self): + # The cache size after a reset should be 0 and the GC attributes + # ought to be linked to it rather than the old cache. + conn = self._db.open() + try: + conn.root() + self.assert_(len(conn._cache) > 0) # Precondition + conn._resetCache() + self.assertEqual(len(conn._cache), 0) + self.assert_(conn._incrgc == conn._cache.incrgc) + self.assert_(conn.cacheGC == conn._cache.incrgc) + finally: + conn.close() + + def test_suite(): return unittest.makeSuite(ZODBTests, 'check') -- 2.30.9