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.


Zope-DB mailing list

Reply via email to