After CLUSTERX SETNODES, nodes assigned the slave role do not start replicating from the master

Aperta
#3,497 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
48/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
cpp, redis

Direzione di ricerca

Traccia la gestione di CLUSTERX SETNODES del controller a partire dall’API di create/update e segui il percorso di assegnazione dei ruoli sul lato node. Confronta i ruoli assegnati con la replica di INFO e verifica se gli slave ricevono ed eseguono SLAVEOF o REPLICAOF per il master loro assegnato. Il lavoro è completato quando ogni slave assegnato segnala role:slave e i collegamenti di replica connessi corrispondono alla topologia del controller.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary

When a cluster is created or updated through the controller, the controller
pushes a CLUSTERX SETNODES payload that includes per-node master/slave
role assignments. Each node accepts the command (+OK), but the nodes
marked as slave do not initiate replication
— INFO replication on every
node returns role:master with connected_slaves:0.

The replication link is never set up; every member behaves as a standalone
master that just happens to know about other members.

Observed

Immediately after a fresh POST /api/v1/namespaces/.../clusters (54 nodes
with replicas=3, expected 18 shards × 1 master + 2 slaves), we sampled
each node's actual INFO replication role: and compared with the role
recorded in the controller meta:

Role alignment: match=26, mismatch=28, dead=0 (total 54)

Roughly half the nodes (28/54) are not following the master the controller
told them to follow. This shows up immediately after the API call — no
failure injection, no restart needed.

Once a node is in this "ghost master" state, no further controller action
(SETNODES re-push, DELETE+recreate, manager restart) brings it back
into a replica role.

Expected

When CLUSTERX SETNODES (or the controller's create/update API) marks a
node as a slave of a particular master, the node should issue an internal
SLAVEOF <master-host> <master-port> to start replication, OR the
controller should explicitly issue REPLICAOF to each slave after the
topology push.

Versions

  • Apache Kvrocks 2.15.0
  • kvctl-server v1.15.0
Lingua principale
C++
Stelle
4.5k
Fork
686
Merge medio
2g 1h
PR unite (30g)
35

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

  • Include un Dockerfile o un file Docker Compose
  • Nessun modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di apache/kvrocks

Tutte le issue di apache/kvrocks

Issue simili

Altre issue su C++

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.