Correct, and very intentional.Apparently, two concurrent transactions try to modify the root object.
Why? I'd suggest an architecture change that removes the root as a hotspot.
The current question is: semaphore or trap error and retry? Chris suggested a retry, and said the semaphore is not necessary.
If you need a semaphore for this, it doesn't need to be persistent. Just use a lok from Python's threading module...
-- Simplistix - Content Management, Zope & Python Consulting - http://www.simplistix.co.uk _______________________________________________ Zope-DB mailing list Zope-DB@zope.org http://mail.zope.org/mailman/listinfo/zope-db