[
https://issues.apache.org/jira/browse/CASSANDRA-5062?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13531103#comment-13531103
]
Jonathan Ellis commented on CASSANDRA-5062:
-------------------------------------------
My preferred option is the second:
- Zookeeper is a nasty dependency to inflict on ourselves. It breaks the
"every node is equal" design and is not a picnic to operate. (Best case, you
have to manually manage compaction. Worst case, nasty corner case failure mode
stories are legion.)
- Spinnaker-style leader election is a *lot* of complexity, even if we roll our
own leader election to avoid also requiring ZK. It's basically a completely
separate read and write path to implement.
Native locking is relatively straightforward to implement and I think it
reaches the bar of "performant enough for now."
But I prefer to expose the functionality as CAS rather than as locking,
precisely because it will allow us to switch to something more performant like
a Spinnaker design down the road, if necessary.
> 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