[Zope-dev] Re: sessions in the presence of conflicts
Florent Guillaume
fg at nuxeo.com
Thu Dec 15 05:35:50 EST 2005
[Using zope-dev@ instead of zope@]
Dennis Allison wrote:
> A more session-friendly conflict resolution might use:
>
> 1. if any of the states are invalid (that is, has a key '_invalid')
> return the invalid state.
>
> 2. if any any of the states attributes ['token','id','_created']
> differ then there is a conflict, raise the conflict exception.
>
> 3. order the newState and savedState by modification time (or if that
> cannot be computed, by access time).
>
> 4. any key appearing in oldState's dictionary but not appearing in
> both savedState and newState should be removed from all. This
> corresponds to a key-value pair being deleted in one of the
> transactions. Insertions will be managed automatically by
> the updates.
>
> 5. beginning with the oldest, update oldState dictionary of key-value
> pairs using the dictionary part of newState and savedState. Return
> oldState.
>
> This does several things. First, it captures independent key-value
> changes made in both potentially conflicting transactions. Second, it
> provides a reasonable ordering for multiple (potentially conflicting)
> key-value pair updates. Third, it manages insertions and deletions to the
> session variable set in the presence of conflicts.
>
> Does this make sense? I have yet to figure out how to map a
> TransientObject "state" back to the object it represents, but it clearly
> is possible.
I certainly makes sense from a high level description, but the devil is in
the details. I'd be interested in looking at it if you code something.
Florent
--
Florent Guillaume, Nuxeo (Paris, France) CTO, Director of R&D
+33 1 40 33 71 59 http://nuxeo.com fg at nuxeo.com
More information about the Zope-Dev
mailing list