[
https://issues.apache.org/jira/browse/CASSANDRA-5062?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13593457#comment-13593457
]
Cristian Opris commented on CASSANDRA-5062:
-------------------------------------------
I understand what you mean by terminology but this is not where the confusion
is coming from.
My commit C1,C2 etc is your learn, agreed. My accept is your commit.
It may be a bit confusing because I'm not detailing everything in the diagram
So when Z goes into C1, that implies: it receives accept from Y, it commits
(i.e. writes) the value locally
and then it sends learn message to X and Y, which might fail without Z having
any record of that.
I know this is not the exact behaviour in your algoritm. I'm not sure how the
leader commits (learns) the value locally, is it because it ends
up calling receive(LEARN) locally (i.e. acting as acceptor as well) ?
But this doesn't change my point.
*My point is the learn can fail without the leader being aware, which leads to
a state where each replica is at a different
stage of learning. Even if the paxos round states are correct in terms of
accepted values (what you call commit), they are not finished in
terms of learning*
> 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