This sure looks like a bug...?

Sean Cribbs sean at
Mon Apr 18 20:38:43 EDT 2011

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 <sean at>
Developer Advocate
Basho Technologies, Inc.

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 at

More information about the riak-users mailing list