This may be the blind leading the blind...

On Mon, Apr 5, 2010 at 11:54 PM, Tatu Saloranta <tsalora...@gmail.com>wrote:
>...


> I think the key is that this is not automatic -- there is no general
> mechanism for aggregating distinct modifications. Point being that you
> could choose one amongst right answers, but not what to do with
> concurrent modifications. So what is done instead is have
> application-specific resolution strategy which makes use of semantics
> of operations, to know how to combine such concurrent modifications
> into "correct" answer.


I agree with all of that.


> I don't know if this is trivial for case of
> counter increments: especially since two concurrent increments give
> same new value; yet correct combined result would be one higher (both
> used base, added one).
>

As long as the conflict resolver knows that two writers each tried to
increment, then it can increment twice. The conflict resolver must know
about the semantics of "increment" or "decrement" or "string append" or
"binary patch" or whatever other merge strategy you choose. You'll register
your "strategy" with Cassandra and it will apply it. Presumably it will also
maintain enough context about what you were trying to accomplish to allow
the merge strategy plugin to do it properly.


> That is to say, my understanding was that vector clocks would be
> required but not sufficient for reconciliation of concurrent value
> updates.
>

I agree. They are necessary, but not sufficient. The other half is the
"merge strategy plugin" thing, which is analogous to custom comparators in
Cassandra today.

In CASSANDRA-580, Pedro Gomes talks about the plugins like this: "I suppose
for the beginning of the discussion that some sort of interface will be
implemented to allow pluggable logic to be added to the server, personalized
scripts were an idea, I have heard. "

Kevin Kakugawa replies that they'll just use Java class libraries as a first
pass.

 Paul Prescod

Reply via email to