Counting in the ZODB is more or less a no-go. You will get write conflicts, and your ZODB will grow (too) quickly. That said, you may want to look at BTrees.Length for a "counter" with built-in conflict resolution.


On 1. Jun 2007, at 09:47, Kai Diefenbach wrote:

After reading some documentation about transactions, concurrency and
atomicity, I don't think that the following issue is a problem, but I'd be nice to get confirmation from some exports. Or - of course - that it
doesn't behave in the way I think.

Within an adapter I increase a counter (e.g. for every download of an
file) by doing:

        self.counter[0] += 1

self.counter is a PersistentList stored as annotation.

Could there be a problem with concurrent access to the counter? With
other words:

Anything that, in happening, causes something else to happen,
causes something else to happen.  --Douglas Adams

For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -

Reply via email to