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:

A gets counter = 5
B gets counter (before A writes the increased counter) = 5

A increases and writes the counter => 6 
B increases and writes the counter => 6 (*)

*) In my understanding, here a ConflictError is raised and the whole
transaction will be repeated, that means it starts with the counter of
6. Is this right?

Thanks in advance

Kai Diefenbach - http://diefenba.ch
iqplusplus - http://iqpp.de

For more information about ZODB, see the ZODB Wiki:

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to