Chris Withers wrote:
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.
Chris, please help me understand how this makes a difference in ZODB. I currently store a persistent list in the ZODB as follows: root[db_name] = some list
Are you suggesting that I store it in some other, nested dictionary off of root, such as:
root[db_name][listname] = some list
Can you give a simple example of what you mean? because, it seems that in eitehr case, I am hittting the same persistent resource, and this would not solve my problem.
The whole appeal of the ZODB and the persistence class is the ability to use Python data structures _normally_. I am hoping to accomplish this without adding an ugly layer of complexity.
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...
These are good suggestions. Thank you, Dieter and Chris.
_______________________________________________ Zope-DB mailing list Zope-DB@zope.org http://mail.zope.org/mailman/listinfo/zope-db