[
https://issues.apache.org/jira/browse/CASSANDRA-16545?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17317321#comment-17317321
]
Andres de la Peña commented on CASSANDRA-16545:
-----------------------------------------------
[~yifanc] overall the approach looks good to me, I have left some comments in
the PR. The CI failures in {{ReadRepairTest}} can be fixed [this
way|https://github.com/apache/cassandra/pull/954#discussion_r609865746]. I have
also run the new {{AssureSufficientLiveNodesTest}} (which is a nice test) is
our internal test multiplexer some few hundred times.
> Cluster topology change may produce false unavailable for queries
> -----------------------------------------------------------------
>
> Key: CASSANDRA-16545
> URL: https://issues.apache.org/jira/browse/CASSANDRA-16545
> Project: Cassandra
> Issue Type: Bug
> Components: Consistency/Coordination
> Reporter: Yifan Cai
> Assignee: Yifan Cai
> Priority: Normal
> Fix For: 4.0-beta
>
> Time Spent: 20m
> Remaining Estimate: 0h
>
> When the coordinator processes a query, it first gets the
> {{ReplicationStrategy}} (RS) from the keyspace to decide the peers to
> contact. Again, it gets the RS to perform the liveness check for the
> requested CL.
> The RS is a volatile filed in Keyspace, and it is possible that those 2
> getter calls return different RS values in the presence of cluster topology
> changes, e.g. add a node, etc.
> In such scenario, the check at the second step can throw an unexpected
> unavailable. From the perspective of the query, the cluster can satisfy the
> CL.
> We should use a consistent view of RS during the peer selection and CL
> liveness check. In other word, both steps should reference to the same RS
> object. It is also more clear and easier to reason about to the clients. Such
> queries are made before the topology change.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]