Chris Withers wrote:

Willadsens wrote:

Apparently, two concurrent transactions try to modify the
root object.

Correct, and very intentional.


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.

Gloria

_______________________________________________
Zope-DB mailing list
Zope-DB@zope.org
http://mail.zope.org/mailman/listinfo/zope-db

Reply via email to