[Zodb-checkins] SVN: ZODB/branches/3.8/ Bug fixed:
Jim Fulton
jim at zope.com
Sun Aug 23 14:23:01 EDT 2009
Log message for revision 103114:
Bug fixed:
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/branches/3.8/NEWS.txt
U ZODB/branches/3.8/src/ZODB/serialize.py
U ZODB/branches/3.8/src/ZODB/tests/testConnection.py
-=-
Modified: ZODB/branches/3.8/NEWS.txt
===================================================================
--- ZODB/branches/3.8/NEWS.txt 2009-08-23 17:58:41 UTC (rev 103113)
+++ ZODB/branches/3.8/NEWS.txt 2009-08-23 18:23:00 UTC (rev 103114)
@@ -19,7 +19,10 @@
- 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
+
Whats new in ZODB 3.8.2
=======================
Modified: ZODB/branches/3.8/src/ZODB/serialize.py
===================================================================
--- ZODB/branches/3.8/src/ZODB/serialize.py 2009-08-23 17:58:41 UTC (rev 103113)
+++ ZODB/branches/3.8/src/ZODB/serialize.py 2009-08-23 18:23:00 UTC (rev 103114)
@@ -506,9 +506,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/branches/3.8/src/ZODB/tests/testConnection.py
===================================================================
--- ZODB/branches/3.8/src/ZODB/tests/testConnection.py 2009-08-23 17:58:41 UTC (rev 103113)
+++ ZODB/branches/3.8/src/ZODB/tests/testConnection.py 2009-08-23 18:23:00 UTC (rev 103114)
@@ -523,6 +523,26 @@
>>> db.close()
"""
+
+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
+
+ >>> import ZODB.tests.util
+ >>> 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