This ticket may explain a few things:
https://issues.apache.org/jira/browse/CASSANDRA-8346

On Tue, Dec 23, 2014 at 12:57 PM, Sam Klock <skl...@akamai.com> wrote:
>
> Hi folks,
>
> I'm working on a project that might benefit from Cassandra's
> compare-and-swap operations, and we're wondering about whether there are
> plausible corner cases under which linearizable consistency semantics
> aren't maintained by the implementation.  In particular, we're
> interested in how Cassandra's Paxos implementation copes with membership
> changes.  A couple of examples:
>
> * The membership of the cluster changes while a Paxos transaction is in
> progress in a way that impacts the replica set for the partition of
> interest.  How does Cassandra account for this?  Is it possible that a
> quorum in the original set might accept a change, whereupon the
> membership of the set changes in such a way that a quorum has no longer
> accepted the change?  If so, what happens then?
>
> * Perhaps a variant of the above: a lightweight transaction on some
> partition is accepted by a quorum but fails on at least one node at the
> commit phase (if, e.g., the Cassandra process dies on them before the
> mutation is applied).  The set of replicas for that partition then
> changes due to some update in the membership of the cluster before the
> Paxos state for that partition is inspected again.  In particular, let's
> say that one member of the quorum that accepted (but did not necessarily
> commit) the mutation is now no longer a replica for the partition.  In
> linearizable consistency still maintained?  Is it possible for two
> serial-consistency reads to inspect the Paxos state of two different
> quorums in that replica set -- the first of which includes only nodes
> that didn't accept the mutation and the second of which includes at
> least one that did -- and thereby supply two different answers?  Or does
> Cassandra take care to ship affected Paxos state to new nodes when they
> bootstrap?  If so, how does that work?
>
> If these scenarios (or others like them) do present challenges for
> Cassandra's CAS implementation, are there any best practices for
> managing them -- for example, only using CAS in clusters with
> (comparatively) stable membership?
>
> Thanks,
> SK
>


-- 
Tyler Hobbs
DataStax <http://datastax.com/>

Reply via email to