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

Jonathan Ellis commented on CASSANDRA-5062:
-------------------------------------------

I think I can summarize things this way:

# Embedding or requiring ZK is a non-starter.  So anything that starts with 
that as a dependency (Spinnaker or Kafka-style replication) means "implement 
ZAB [or Paxos] first."
# A global master to designate cohort leaders as in HBase or Hibari is also a 
non-starter.
# ZAB recovery after leader failure is a mess.  (I recommend the 2008 paper 
over the 2011 one; it's far more readable.)
# All of the options require some kind of "proposal storage" separate from 
committed rows.

So I keep coming back to, "first implement raw Paxos; then we can use that at a 
building block to optimize later if CAS performance becomes more of a 
priority."  (Proposal storage may in fact be the initial bottleneck, not the 
replication strategy.)
                
> 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
>
>
> "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