-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ensure gocql handles zero-token nodes properly #226
Comments
@dkropachev I created a PR for things I discover when testing first scenario, but second scenario is impossible to use because when I try to start single node cluster with join_ring=false I have an error: |
Thanks, it looks like it is imposible, let's focuse then on zero-token DC case |
@dkropachev Is is ok if it fails with error like this: |
@dkropachev ping |
@sylwiaszunejko , It needs some context, but I am looking for following scenarios
|
Let's make sure we add a unit test for it. |
Currently, all scenarios tested manually, two PRs merged to address issue @sylwiaszunejko have found: Unfortunately, due to architecture from horror movie having unit tests let alone integration tests for these scenarios is not something simple these tasks will be addressed on separately: |
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: