You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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 and system.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
Spin up a cluster with 3 nodes
Join one additional node in zero-token mode, by setting join_ring to false in it's configuration, or adding -Dcassandra.join_ring=false to cli (cassandra only).
Make sure that drivers works as expected and do not throw any errors while reading schema with this node being in the cluster
Make sure that drivers works as expected and do not throw any errors while processing topology events (if these events issues) when such node joins/leaves cluster.
Make sure that zero-token node does not participate in the routing
Test if driver works properly if only connection point provided is zero-token node
Ensure that at no point driver throw error or warning caused by zero-token node presence.
Cluster that starts with zero-token node (DROPPED)
Start single node cluster with join_ring=false
Connect to it, to make sure that driver session is created and every query end up in no host available error.
Populate cluster with 3 more nodes
Make sure that driver can execute queries
Ensure that at no point driver throw error or warning.
Zero-token Datacenter
Repeat this scenario for following policies:
DCAwareRoundRobinPolicy
TokenAwareHostPolicy(DCAwareRoundRobinPolicy())
TokenAwareHostPolicy(RoundRobinHostPolicy())
For DCAwareRoundRobinPolicy use three variants:
Target first DC with real nodes
Target second DC with zero token nodes
(For drivers that supports it, gocql does not) Do not target any DC, make sure that policy won't pick datacenter with no real nodes.
Steps:
3. Start cluster of 2 nodes with 1 DC
4. Provision 2 more nodes into 2nd DC in join_ring=false mode
5. 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 with no host available error
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: