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 )

Reply via email to