[Zope] Re: Zeo and conflict resolution (was "suddenly confused")

Ricardo Newbery ric at digitalmarbles.com
Wed Jan 30 17:31:14 EST 2008


On Jan 30, 2008, at 1:39 PM, Chris McDonough wrote:

> Ricardo Newbery wrote:
>> On Jan 30, 2008, at 12:59 PM, Tres Seaver wrote:
>>> -----BEGIN PGP SIGNED MESSAGE-----
>>> Hash: SHA1
>>>
>>> Ricardo Newbery wrote:
>>>
>>>> Has anyone given thought to maybe providing a more general class  
>>>> with
>>>> conflict resolution in the core distribution?  The Length class  
>>>> works
>>>> for simple counters and I guess it can also be used for just simple
>>>> assignments, but what about something more complicated, perhaps  
>>>> with
>>>> some sort of factory defined at the moment of instantiation?
>>>>
>>>> Assuming this is even possible, having such a general purpose
>>>> conflict resolution class defined in the Zope products directory
>>>> might make it easier to distribute a third-party product that  
>>>> needs a
>>>> little conflict resolution.  Just a thought.
>>>
>>> Custom CR code is *hard* to get right:  most people would be  
>>> better off
>>> using stock code (e.g., on of the tree types defined in the BTrees
>>> package, or Length).  Those who can get it right aren't likely to  
>>> need
>>> their hands held.  ;)
>> I meant easier for the end user, not the developer.  It's kind of  
>> complicated right now to explain how to set up a ZEO configuration  
>> to work with your third-party product.  Makes it a bit of hurdle  
>> to distribute such a thing for general use.
>> Oops, I just realized that Length won't work for simple  
>> assignments as the conflict resolution assumes it's trying to  
>> resolve a counter (which should have been obvious, I know).  Is  
>> there zope core class I can use for a simple assignment, that  
>> maybe resolves conflicts by just picking the last value assigned?
>
> There is no such thing as the "last value" during a conflict (only  
> three states: what's in the database, and the two conflicting  
> states: what connection1 says, and what connection2 says).  If the  
> values are always going to have a __cmp__ method or if they can be  
> otherwise compared (like integers), and if you're willing to accept  
> the "highest" of the three states, you might use the conflict  
> resolution policy of Products.Transience.Transience.py.Increaser.


Great, that's exactly what I need.  Thanks.

I also noticed another interesting option for a counter at  
Products.Transience.Transience.Length2.

Ric




More information about the Zope mailing list