KRaft: adding a controller role group can bootstrap a second quorum
Maintainer thường phản hồi trong vòng 1 ngày
Đánh giá
Issue này chưa được đánh giá.
Mô tả
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.
- Ngôn ngữ chính
- Rust
- Star
- 31
- Fork
- 9
- Merge trung bình
- 4 ngày 5 giờ
- Pull request đã merge (30 ngày)
- 14
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Không có hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của stackabletech/kafka-operator
-
Use mTLS instead of Kerberos for KRaft inter-node trafficCó thể đã có người làm @razvan đã nhận 1 ngày trước. Đang mởtype/internal-improvement
stackabletech/kafka-operator#1066 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
KRaft: a new controller can bootstrap against itself and never join the quorumCó thể đã có người làm @razvan đã nhận 1 ngày trước. Đang mởtype/bug
stackabletech/kafka-operator#1062 · 1 người được giao ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 30/100
stackabletech/kafka-operator#1059 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 35/100
stackabletech/kafka-operator#1058 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
type/bug
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 35/100
stackabletech/kafka-operator#955 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của stackabletech/kafka-operator
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
storytold/photocraft#14822 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug css
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 66/100
dginev/latexml-oxide#853 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 2 ngày
-
[Bug] export_build_environment admits its output directory only after the export ran in the build computerCó thể đã có người làm @viniciusdsandrade đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 62/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
Maintainer thường phản hồi trong vòng 1 ngày