Jonathan wrote at 2006-7-6 09:53 -0400: > ... >>From what I understand from the above code, the error is being raised >because the oid already exists and the object pointed to by the old oid is >different from the object pointed to by the new oid, hence the conflict >error.
You interpretation is slightly wrong. What really differs is not the object (or "oid") but the timestamp. Each persistent object has a timestamp "_p_serial" which identifies the transaction that made the last change to the object. When an object is loaded from the ZODB, its timestamp is recorded (in "_p_serial"). When later a change to the object should be commited, the recorded timestamp is compared to the object's current timestamp in the ZODB. If the timestamps differ, then the object was modified by a concurrent transaction and our modification is likely to be based on stale information. As a result a "ConflictError" is raised. -- Dieter _______________________________________________ Zope maillist - Zope@zope.org http://mail.zope.org/mailman/listinfo/zope ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope-dev )