SVN: ZODB/branches/3.8/ Bug fixed:

Jim Fulton <[email protected]>
Newsgroups gmane.comp.python.zope.zodb.cvs
Message-ID <[email protected]>
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):
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.