Commit 7d4519de authored by Jim Fulton's avatar Jim Fulton

Bug fixed:

  Objects defining _p_deactivate methods that didn't call base methods
  weren't loaded properly. https://bugs.launchpad.net/zodb/+bug/185066
parent 60d6dcf7
......@@ -19,6 +19,9 @@ Bugs Fixed:
- 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
=======================
......
......@@ -506,9 +506,9 @@ class ObjectReader:
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
......
......@@ -523,6 +523,26 @@ def test_invalidateCache():
>>> 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):
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment