java-driver
java-driver copied to clipboard
Ensure java-driver handles zero-token nodes properly
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_ringtofalsein it's configuration, or adding-Dcassandra.join_ring=falseto 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-tokennode does not participate in the routing - Test if driver works properly if only connection point provided is
zero-tokennode - Ensure that at no point driver throw error or warning caused by
zero-tokennode presence.
Cluster that starts with zero-token node
- 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 availableerror. - Populate cluster with 3 more nodes
- Make sure that driver can execute queries
- Ensure that at no point driver throw error or warning.
Links
Original umbrella issue in scylladb/scylladb repo: https://github.com/scylladb/scylladb/issues/19693
Core issue to bring join_ring option into scylla: https://github.com/scylladb/scylladb/issues/6527
PR that brings this feature in https://github.com/scylladb/scylladb/pull/19684