[
https://issues.apache.org/jira/browse/CASSANDRA-5062?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13593565#comment-13593565
]
Cristian Opris commented on CASSANDRA-5062:
-------------------------------------------
Agreed, as I said the paxos itself is correct, and all replicas will
*eventually* learn the outcome.
However, in the example above, which you agree can happen, how do you do a
consistent read when each replica is on it's learned value ?
And by consistent read I mean one that is truly monotonic and truly read after
write so that CAS doesn't fail spuriously.
If state is X=L2, Y=L0, Z=L3, say no concurrency and a single client, it needs
to be able to read a value, and then send back a CAS
that replaces that value (single client remember) and expect that CAS to
succeed.
With a proper CAS clients can implement more interesting distributed
concurrency control as with ZK so it's worth providing true serial consistency
at least at column level.
> 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