Ensure cpp-rust-driver handles zero-token nodes properly #203
Labels
enhancement
New feature or request
rust-driver-missing
Functionality that Rust driver needs to implement first
PR#19684 brings possibility of having nodes coordinator-only nodes (or zero-token nodes).
These types of nodes are going to be supported only in RAFT.
Such nodes, despite being registered in the cluster, do not handle any queries and should be excluded from query routing.
This feature is already present in cassandra, but not merged into scylla yet, so we might want to start testing it on our drivers with cassandra first.
Difference between cassandra and scylla implementation
Major difference is that these nodes are absent from
system.peers
andsystem.peers_v2
in cassandra, while in scylla implementation these nodes are going to be present there.Due to this fact we will need to test Apache and datastax drivers against
scylla
as well.Approx. Testing plan
Regular cluster
join_ring
tofalse
in it's configuration, or adding-Dcassandra.join_ring=false
to cli (cassandra only).zero-token
node does not participate in the routingzero-token
nodezero-token
node presence.Cluster that starts with zero-token node(DROPPED)no host available
error.Zero-token Datacenter
Repeat this scenario for following policies:
DCAwareRoundRobinPolicy
TokenAwareHostPolicy(DCAwareRoundRobinPolicy())
TokenAwareHostPolicy(RoundRobinHostPolicy())
For
DCAwareRoundRobinPolicy
use three variants:Steps:
3. Start cluster of 2 nodes with 1 DC
4. Provision 2 more nodes into 2nd DC in
join_ring=false
mode5. Connect to the cluster, using
policy
to make sure that driver session is created and every query is being scheduled to regular nodes and executed successfully. In cases when zero-token DC is targeted queries suppose to fail withno host available
errorLinks
Original umbrella issue in
scylladb/scylladb
repo: scylladb/scylladb#19693Core issue to bring
join_ring
option into scylla: scylladb/scylladb#6527PR that brings this feature in scylladb/scylladb#19684
The text was updated successfully, but these errors were encountered: