-
Notifications
You must be signed in to change notification settings - Fork 1k
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
Avoid routing to cluster replicas that are loading data #1923
Comments
Removing replicas based on the repl-offset will also remove replicas that cannot contact the master/upstream node although the node is functional otherwise. That is quite a significant change in comparison to leniently accept all replicas. |
Is there a middle ground? Accept nodes that have /ever/ replicated successfully, and ignore nodes that have /never/ replicated? |
Starting in 6.2, repl-offset is preserved until the point the data is flushed, which means that it is no longer able to usefully serve traffic (except for pubsub, but I would posit we don't care about that here). |
For the time being, we have that switch avoids command routing to replicas without data within the routing mechanism. If it turns out to be too invasive, we can move things into the individual |
Refined the description, we're using |
We now no longer route traffic to read replicas that have not successfully replicated yet (master_repl_offset = 0) to avoid LOADING error replies. To determine the replication offset, we query each node about its repl_offset upon obtaining the topology.
We now no longer route traffic to read replicas that have not successfully replicated yet (master_repl_offset = 0) to avoid LOADING error replies. To determine the replication offset, we query each node about its repl_offset upon obtaining the topology.
Nodes that have joined the cluster and still load data should not receive any traffic unless they are fully replicated. As per @madolson, if the
master_repl_offset
is0
, we should skip that node from command routing.The text was updated successfully, but these errors were encountered: