[Zodb-checkins] SVN: ZODB/trunk/src/ Fixed bug:
Jim Fulton
jim at zope.com
Sun Aug 23 13:58:42 EDT 2009
Log message for revision 103113:
Fixed bug:
Objects defining _p_deactivate methods that didn't call base methods
weren't loaded properly. https://bugs.launchpad.net/zodb/+bug/185066
Changed:
U ZODB/trunk/src/CHANGES.txt
U ZODB/trunk/src/ZODB/serialize.py
U ZODB/trunk/src/ZODB/tests/testConnection.py
-=-
Modified: ZODB/trunk/src/CHANGES.txt
===================================================================
--- ZODB/trunk/src/CHANGES.txt 2009-08-23 17:21:09 UTC (rev 103112)
+++ ZODB/trunk/src/CHANGES.txt 2009-08-23 17:58:41 UTC (rev 103113)
@@ -19,6 +19,9 @@
- Calling __setstate__ on a persistent object could under certain
uncommon cause the process to crash.
+- Objects defining _p_deactivate methods that didn't call base methods
+ weren't loaded properly. https://bugs.launchpad.net/zodb/+bug/185066
+
3.9.0b5 (2009-08-06)
====================
Modified: ZODB/trunk/src/ZODB/serialize.py
===================================================================
--- ZODB/trunk/src/ZODB/serialize.py 2009-08-23 17:21:09 UTC (rev 103112)
+++ ZODB/trunk/src/ZODB/serialize.py 2009-08-23 17:58:41 UTC (rev 103113)
@@ -514,9 +514,9 @@
obj._p_oid = oid
obj._p_jar = self._conn
# When an object is created, it is put in the UPTODATE
- # state. We must explicitly deactivate it to turn it into
+ # state. We must explicitly invalidate it to turn it into
# a ghost.
- obj._p_changed = None
+ obj._p_invalidate()
self._cache[oid] = obj
return obj
Modified: ZODB/trunk/src/ZODB/tests/testConnection.py
===================================================================
--- ZODB/trunk/src/ZODB/tests/testConnection.py 2009-08-23 17:21:09 UTC (rev 103112)
+++ ZODB/trunk/src/ZODB/tests/testConnection.py 2009-08-23 17:58:41 UTC (rev 103113)
@@ -663,10 +663,25 @@
self.assert_(cache.total_estimated_size >= 0)
+class class_that_ignores_deactivate(Persistent):
+ def _p_deactivate(self): pass
+def loading_objects_that_ignore_deactivate_bug_185066():
+ """See https://bugs.launchpad.net/bugs/185066
+ >>> db = ZODB.tests.util.DB()
+ >>> conn = db.open()
+ >>> conn.root.c = class_that_ignores_deactivate()
+ >>> conn.root.c.x = 1
+ >>> transaction.commit()
+ >>> conn2 = db.open()
+ >>> conn2.root.c.x
+ 1
+ """
+
+
# ---- stubs
class StubObject(Persistent):
More information about the Zodb-checkins
mailing list