thinker0 opened a new issue, #395:
URL: https://github.com/apache/kvrocks-controller/issues/395

   ## Summary
   
   `kvctl-server` propagates cluster topology via a push to each data node, but
   if the push fails (network blip, target restarting, etc.) it is **not 
retried**.
   After a controller restart or any partial failure the data nodes end up with
   different views of the cluster, and the cluster does not self-heal.
   
   ## Observed
   
   In an 18-shard cluster (`replicas=3`, 54 nodes) we ran `CLUSTER NODES` on
   four representative masters at the same time:
   
   | Master | Visible nodes (master + slave) |
   |--------|--------------------------------|
   | shard 0  | **3** (a residual view from a 3-shard cluster created earlier) |
   | shard 1  | 17 |
   | shard 9  | 33 (a residual view from a 27-shard cluster created in between) 
|
   | shard 17 | 8 |
   | Expected | **54** |
   
   `cluster_state:ok` and `cluster_slots_ok:16384` on every node, so routing
   formally works, but every node holds a different `cluster_nodes` snapshot
   and clients that bootstrap from a "small" master keep redirecting traffic
   to a few hot masters.
   
   The state never converges back. Manager restart (rolling, all 3 instances)
   only partially refreshed the views. There is no operator-facing endpoint
   (`/sync`, `/refresh`, `/reload`, …) to force a re-push — all returned 404.
   
   ## Expected
   
   * Controller retries the per-node push with backoff until each node
     acknowledges the new topology version, OR
   * Exposes a `POST /clusters/{name}/sync` (or similar) endpoint that
     re-pushes the current `cluster_nodes` to every member.
   
   ## Repro (vanilla setup)
   
   1. Start `kvctl-server` v1.15.0 and 6 Apache Kvrocks 2.15.0 data nodes.
   2. Create a cluster with `replicas=2` (2 shards × 3 nodes).
   3. `iptables -A INPUT -p tcp --dport <node-3-port> -j DROP` for ~10 s.
   4. Remove the rule, wait, then run `CLUSTER NODES` on every node.
   
   Node 3 has a stale `cluster_nodes` view; nothing converges back even
   after several minutes.
   
   ## Versions
   
   - `kvctl-server` v1.15.0
   - Apache Kvrocks 2.15.0


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to