Yes, but vector clocks are for resolution of race-conditions and network 
partitions, not to provide an SCM history.  Imagine how much space would be 
consumed by the history long enough to disambiguate an object that has been 
updated normally 1000 times, followed by one bad client that decides write to 
it without fetching the vector clock first.

Coda Hale put it well in his talk at the recent Riak Meetup: your data needs to 
be logically monotonic so that writes (and reads) can be retried until 
resolution is reached.

Also, we've found that assigning the client id to something that is relevant to 
your domain, e.g. real people, will help reduce surprises (and degenerate cases 
like sibling explosion) when it comes to vector-clock resolution.

Sean Cribbs <s...@basho.com>
Developer Advocate
Basho Technologies, Inc.
http://basho.com/

On Apr 18, 2011, at 8:15 PM, Aphyr wrote:

>> I actually had a question about that page.  Why is it that when there
>> is a conflict we can only get the conflicting versions of the data?
>> If I'm going to try to resolve the conflict intelligently, I really
>> want the common ancestor as well so that I can try to do a 3-way
>> merge.
> 
> Good call. If an ancestor were available it would make counting and merging 
> orthogonal changes *much* simpler.
> 
> _______________________________________________
> riak-users mailing list
> riak-users@lists.basho.com
> http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com


_______________________________________________
riak-users mailing list
riak-users@lists.basho.com
http://lists.basho.com/mailman/listinfo/riak-users_lists.basho.com

Reply via email to