At 18:34 26-10-2003, Dieter Maurer wrote:
Gitte Wange wrote at 2003-10-26 11:25 +0100:
At 11:03 26-10-2003, Dieter Maurer wrote:
Gitte Wange wrote at 2003-10-25 13:39 +0200:
I have created a small tool for CMF to count how many times a specific object has been viewed. ... Now from time to time we see the following error: ZODB.POSException.ConflictError
When you put counters in the ZODB, you should use "BTrees.Length" instances. They are small persistent objects with conflict resolution (no ZODB write conflicts) and "independence" (no ZODB read conflicts).
Arh ... At this moment I just have a dictionary with URL as key and count as value. count is a simple integer. So instead I should save value as an instance of BTrees.Length() ? Or just I make something else than a dictionary ?
If your counter is maintained in the ZODB, the counter should be a "BTrees.Length" instance. Otherwise, you can use whatever data structure seems best for you.
Sorry Dieter if I'm slow on this but I just don't get it ... At this moment I have a dictionary looking like this: views = {'http://mypage.com/frontpage': 10, 'http://mypage.com/article2': 3} This get's saved into ZODB and - as I understand - causes the ConflictErrors ? Instead I should use some sort of BTrees.Length object ... and then my question is: Should the dictionary look like this instead: views = {'http://mypage.com/frontpage': BTrees.Length(10), 'http://mypage.com/article2': BTrees.Length(3)} ?? Or is it the entire dictionary that should be some kind of BTrees.Length() ?? Greetings, Gitte Wange