cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Ellis (JIRA)" <>
Subject [jira] [Commented] (CASSANDRA-5062) Support CAS
Date Thu, 13 Dec 2012 15:36:12 GMT


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:
>             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:

View raw message