[
https://issues.apache.org/jira/browse/CASSANDRA-5062?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13584968#comment-13584968
]
Jonathan Ellis edited comment on CASSANDRA-5062 at 2/23/13 2:44 AM:
--------------------------------------------------------------------
Paxos actually addresses this problem nicely. The key thing that Paxos does
that 2PC/3PC do not is, after accepting a proposal, participants will reply to
future proposals from any coordinator with the highest-numbered (i.e., most
recent) accepted proposal, which the coordinator will then resume progress on.
Thus, partitions cannot cause multiple operations to succeed independently.
In our example, A and at least one of {B,C} have accepted the original
proposal. On partition, a new coordinator must have both B and C accept a new
proposal for it to succeed, and thus will get a reply containing A's value.
The new coordinator must then commit A's value.
More on Paxos:
- http://the-paper-trail.org/blog/consensus-protocols-paxos/
- http://research.microsoft.com/en-us/um/people/lamport/pubs/paxos-simple.pdf
was (Author: jbellis):
Paxos actually addresses this problem nicely. The key thing that Paxos
does that 2PC/3PC do not is, after accepting a proposal, participants will
reply to future proposals from any coordinator with the highest-numbered (i.e.,
most recent) accepted proposal, which the coordinator will then resume progress
on. Thus, partitions cannot cause multiple operations to succeed
independently.
In our example, A and at least one of {B,C} have accepted the original
proposal. On partition, a new coordinator must have both B and C accept a new
proposal for it to succeed, and thus will get a reply containing A's value.
The new coordinator must then commit A's value.
> 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