KRaft: a new controller can bootstrap against itself and never join the quorum

Ouverte
#1,062 0 commentaires 0 réactions 1 personne assignée Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

@razvan y travaille déjà.

Depuis le 13/11/2026.

  • #1063 par @razvan — ouverte

Évaluation

Cette issue n'a pas encore été évaluée.

Description

type/bug
Description

A controller that starts without metadata (a new pod, e.g. after scaling up a controller role group) finds the quorum leader through controller.quorum.bootstrap.servers. Outside Kerberos, that list has one entry per controller role group: the role group's headless Service. That Service sets publishNotReadyAddresses: true, so the name also resolves to the starting pod's own IP.

Kafka treats each entry in controller.quorum.bootstrap.servers as one bootstrap node and resolves its name when it connects. If the starting pod's lookup returns its own IP, the connection succeeds, so Kafka never tries another address. The pod asks itself for the leader, gets no answer, and repeats this forever.

This is a race in the quorum management added in #1010.

Symptoms
  • The new controller stays in Raft state unattached (epoch 0) and never becomes an observer. The quorum's replication status doesn't list it at all.
  • Its quorum-manager sidecar logs Local Raft state is 'unattached', nothing to do indefinitely, so it never calls add-controller.
  • The kafka container never becomes ready, and the StatefulSet rollout stalls. Because the StatefulSet uses OrderedReady, later replicas are not created either.
  • The pod's only connections on the controller port go to its own IP.
  • Deleting the pod usually clears it: the replacement resolves another IP and joins normally.
Langage dominant
Rust
Étoiles
31
Forks
9
Merge moyen
4 j 5 h
PR mergées (30 j)
14

Préparer son environnement

  • Aucun Dockerfile ni fichier Docker Compose
  • Propose un modèle de pull request
  • Aucun guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de stackabletech/kafka-operator

Toutes les issues de stackabletech/kafka-operator

Issues similaires

Plus d'issues Rust

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.