KRaft: adding a controller role group can bootstrap a second quorum
Les mainteneurs répondent en général sous 1 jour
Évaluation
Cette issue n'a pas encore été évaluée.
Description
Description
In KRaft mode, exactly one controller formats its storage with --standalone and bootstraps the metadata quorum. All other controllers join it later through the quorum-manager
sidecar. This was introduced in #1010, which is not released yet.
The operator picks the bootstrap controller as the one with the lowest node.id in the current spec. Node IDs come from a hash of the role group name, so a controller role
group added later can get lower node IDs than the existing ones. Its first pod starts with an empty volume, formats with --standalone, and becomes the leader of a second,
single-voter quorum under the same cluster ID.
This is not an edge case: any second controller role group added next to it triggers the bug.
Impact
- The new controller never joins the real quorum and keeps its own metadata log under the same cluster ID.
- Nothing in the cluster status shows the problem. The KafkaCluster stays
Available, and the new controller'squorum-managersees itself as leader and does nothing. - Brokers that are already connected stay on the original quorum, so clients keep working. If the original controller role group is removed later, the brokers crash-loop.
- As a side effect, adding such a role group changes the start command of every existing controller, which restarts all of them.
Steps to reproduce
- Create a KRaft KafkaCluster with a
defaultcontroller role group (3 replicas) and a broker role group. - Add a controller role group named
extrawith 1 replica. - Run
kafka-metadata-quorum.sh describe --replicationagainstextra-0. It reports a single-voter quorum led by itself, not the original quorum with 4 voters.
Known limitations (out of scope)
- If the status is lost, the operator chooses the bootstrap controller again from the current spec.
- 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
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de stackabletech/kafka-operator
-
Use mTLS instead of Kerberos for KRaft inter-node trafficPeut-être pris @razvan l’a pris il y a 1 jour. Ouvertetype/internal-improvement
stackabletech/kafka-operator#1066 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
KRaft: a new controller can bootstrap against itself and never join the quorumPeut-être pris @razvan l’a pris il y a 1 jour. Ouvertetype/bug
stackabletech/kafka-operator#1062 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 30/100
stackabletech/kafka-operator#1059 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
stackabletech/kafka-operator#1058 ·
Les mainteneurs répondent en général sous 1 jour
-
type/bug
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 35/100
stackabletech/kafka-operator#955 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de stackabletech/kafka-operator
Issues similaires
-
comp-formats
Difficulté 2/5 Une demi-journée Accessibilité débutants 64/100
ClickHouse/ClickHouse#131694 ·
Les mainteneurs répondent en général sous 1 jour
-
cli: `execCargoMetadata` decodes stdout per chunk, corrupting non-ASCII paths across pipe boundariesOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Copperpour/Copperpour#500 ·
Les mainteneurs répondent en général sous 1 jour
-
state:triage-needed
Difficulté 1/5 1-3 heures Accessibilité débutants 78/100
Les mainteneurs répondent en général sous 1 jour