[Zope3-checkins] CVS: Zope3/src/zodb - connection.py:1.20
Jeremy Hylton
jeremy@zope.com
Thu, 20 Mar 2003 13:01:44 -0500
Update of /cvs-repository/Zope3/src/zodb
In directory cvs.zope.org:/tmp/cvs-serv19355
Modified Files:
connection.py
Log Message:
Remove some unnecessary code in _objcommit() to handle new objects.
register() is only called by an existing persistent object, so add
asserts to verify this invariant. As a result, new objects will never
be found in _objcommit(); they'll always be found by the
ObjectWriter.
Also rename variables to obj from object and pobject.
Noted during code review with Rys McCusker.
=== Zope3/src/zodb/connection.py 1.19 => 1.20 ===
--- Zope3/src/zodb/connection.py:1.19 Mon Mar 17 12:09:41 2003
+++ Zope3/src/zodb/connection.py Thu Mar 20 13:01:44 2003
@@ -231,6 +231,7 @@
raise ReadConflictError(object=obj)
def register(self, obj):
+ assert obj._p_jar is self and obj._p_oid is not None
if not self._registered:
self._get_transaction().join(self)
self._registered.add(obj)
@@ -437,47 +438,44 @@
obj._p_changed = 0
obj._p_serial = serial
- def _objcommit(self, object, transaction):
- oid = object._p_oid
+ def _objcommit(self, obj, transaction):
+ oid = obj._p_oid
self._log.debug("commit object %s", u64(oid))
- if oid is None or object._p_jar is not self:
- oid = self._storage.newObjectId()
- object._p_jar = self
- object._p_oid = oid
- self._created.add(oid)
- elif object._p_changed:
+ if obj._p_changed:
self._modified.add(oid)
else:
- return # Nothing to do
+ # The object reverted to the up-to-date state after
+ # registering.
+ return
writer = ObjectWriter(self)
- for obj in writer.newObjects(object):
+ for obj in writer.newObjects(obj):
self._commit_store(writer, obj, transaction)
writer.close()
- def _commit_store(self, writer, pobject, transaction):
- oid = pobject._p_oid
- serial = getattr(pobject, '_p_serial', None)
+ def _commit_store(self, writer, obj, transaction):
+ oid = obj._p_oid
+ serial = getattr(obj, '_p_serial', None)
if serial is None:
self._created.add(oid)
else:
self._inv_lock.acquire()
try:
if (oid in self._invalidated and
- not hasattr(pobject, '_p_resolveConflict')):
+ not hasattr(obj, '_p_resolveConflict')):
raise ConflictError(oid=oid)
finally:
self._inv_lock.release()
self._modified.add(oid)
- data, refs = writer.getState(pobject)
+ data, refs = writer.getState(obj)
s = self._storage.store(oid, serial, data, refs, self._version,
transaction)
# Put the object in the cache before handling the
# response, just in case the response contains the
# serial number for a newly created object
- self._cache[oid] = pobject
+ self._cache[oid] = obj
self._handle_serial(s, oid)
def _commit_sub(self, txn):