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

Sylvain Lebresne commented on CASSANDRA-5062:
---------------------------------------------

[~jbellis] Still a bit confused by your diagram really. Mainly, it seems from 
what's above that your mostRecentCommitted is a Paxos proposal number, but then 
you seem to use it to decide whether to move from one round to the other. So 
does that mean that what you call round in those diagram is just a proposal 
number (in which case, I'm still confused on how you actually use Paxos to do 
CAS) or does it means a full instance of the Paxos algorithm (in which case, I 
haven't fully understood how you decide it's ok to start a new round without 
breaking correctness)?

All that to say, if you have some pseud-code of the whole things, I'd be 
interested :).

In the meantime, I've pushed my own reflection a bit too, fixing the 
impracticability I mention earlier (of an ever growing log basically). I wrote 
the thing down to convince myself this was working and get rid of foggy part. 
This is a largely a brain dump, though it does contain a fairly precise 
algorithm that as far as I can tell, work (but I could definitively have missed 
something). I put that brain at http://goo.gl/pnq4Z, in case that's of interest 
(it's *not* short, but I think it's fairly precise). That proposal definitively 
share a number of idea/similarity with Jonathan's one, but it's definitively 
not similar since it doesn't provide the same tradeoff (it doesn't allow mixing 
CAS and non-CAS operation for one, and is not "rate limited by clock resolution 
and clock skew", though I'm not sure what that means tbh). It's fairly simple 
to implement too. Anyway, just wanted to share my own reflexion.
                
> Support CAS
> -----------
>
>                 Key: CASSANDRA-5062
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5062
>             Project: Cassandra
>          Issue Type: New Feature
>          Components: API, Core
>            Reporter: Jonathan Ellis
>             Fix For: 2.0
>
>         Attachments: half-baked commit 1.jpg, half-baked commit 2.jpg, 
> half-baked commit 3.jpg
>
>
> "Strong" consistency is not enough to prevent race conditions.  The classic 
> example is user account creation: we want to ensure usernames are unique, so 
> we only want to signal account creation success if nobody else has created 
> the account yet.  But naive read-then-write allows clients to race and both 
> think they have a green light to create.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to