Repository navigation
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Fixes #1062
In KRaft mode, a controller that starts without metadata, such as a new pod after scaling up, finds the quorum leader through
controller.quorum.bootstrap.servers. Without Kerberos, that list had one entry per controller role group: the role group's headless Service. That Service also publishes pods that aren't ready, so a starting controller could resolve the name to its own address. The connection to itself succeeds, so Kafka never tried another address. The pod stayedunattached, never joined the quorum, and the StatefulSet rollout stalled.controller.quorum.bootstrap.serversnow always lists the individual controller pods, as it already did for Kerberos clusters. Kafka picks a random entry for every fetch attempt, so a pod that picks itself only loses that one attempt and then reaches a voter that knows the leader.Changes
kraft_controllers()returns the FQDN of every controller pod for all clusters. The Kerberos-only branch and its parameter are gone.Unchanged:
quorum-managersidecar and thepreStophook. Both read the list fromcontroller.propertiesand already handled a list of pods under Kerberos.Behavior change
The list now changes whenever the number of controller replicas changes, so scaling a controller role group restarts all controller and broker pods. This only affects clusters without Kerberos or OPA. Kerberos clusters already restarted because of this list, and OPA clusters because
super.userslists every pod.Tests
operations-kraftscales controllers from 3 to 5 and back. New controllers must join without manual intervention.smoke-kraftandkraft-kerberoscheck for regressions.Definition of Done Checklist
Author
Reviewer
Acceptance
type/deprecationlabel & add to the deprecation scheduletype/experimentallabel & add to the experimental features tracker