[ 
https://issues.apache.org/jira/browse/CASSANDRA-1072?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12889741#action_12889741
 ] 

Jonathan Ellis commented on CASSANDRA-1072:
-------------------------------------------

Sounds like the problem is you are trying to be too clever by making increment 
too low-level.  It's fine to have increment be a special op at the thrift 
level, but internally we need to deal with _values_ and clocks otherwise we 
lose the ability to detect conflicts, as in your example.  If A should send out 
(11: {A: 11}) -- that is, (value, {clock}), then B and C can tell that their 
clocks are ancestors of A's w/ no conflicts.

This does mean that we need to keep conflict history for up to GCGraceSeconds 
(good discussion at http://pl.atyp.us/wordpress/?p=2601) but that is much more 
acceptable than compromising our fully-distributed design.  I also suspect it 
would be much less code, as well as more generalized.

> Increment counters
> ------------------
>
>                 Key: CASSANDRA-1072
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1072
>             Project: Cassandra
>          Issue Type: Sub-task
>          Components: Core
>            Reporter: Johan Oskarsson
>            Assignee: Kelvin Kakugawa
>         Attachments: CASSANDRA-1072-2.patch, CASSANDRA-1072.patch
>
>
> Break out the increment counters out of CASSANDRA-580. Classes are shared 
> between the two features but without the plain version vector code the 
> changeset becomes smaller and more manageable.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to