[Zope-Checkins] CVS: Zope3/src/ZODB - Connection.py:1.140.2.3
Jeremy Hylton
jeremy at zope.com
Mon Mar 29 14:15:20 EST 2004
Update of /cvs-repository/Zope3/src/ZODB
In directory cvs.zope.org:/tmp/cvs-serv13538
Modified Files:
Tag: jeremy-txn-branch
Connection.py
Log Message:
Make sure added objects aren't registered multiple times.
=== Zope3/src/ZODB/Connection.py 1.140.2.2 => 1.140.2.3 ===
--- Zope3/src/ZODB/Connection.py:1.140.2.2 Mon Mar 22 16:36:28 2004
+++ Zope3/src/ZODB/Connection.py Mon Mar 29 14:15:19 2004
@@ -310,10 +310,13 @@
assert obj._p_oid is None
oid = obj._p_oid = self._storage.new_oid()
obj._p_jar = self
- self._added[oid] = obj
if self._added_during_commit is not None:
self._added_during_commit.append(obj)
self.getTransaction().register(obj)
+ # Add to _added after calling register(), so that _added
+ # can be used as a test for whether the object has been
+ # registered with the transaction.
+ self._added[oid] = obj
elif obj._p_jar is not self:
raise InvalidObjectReference(obj, obj._p_jar)
@@ -653,6 +656,9 @@
# a way, this will be a very confusing warning.
warnings.warn("Assigning to _p_jar is deprecated",
DeprecationWarning)
+ elif obj._p_oid in self._added:
+ # It was registered before it was added to _added.
+ return
self.getTransaction().register(obj)
def root(self):
More information about the Zope-Checkins
mailing list