lh0156 opened a new pull request, #23038: URL: https://github.com/apache/kafka/pull/23038
KAFKA-20295: Use current quorum voters for controller feature validation The controller feature validation path currently iterates every controller registration in the metadata image. With a dynamic quorum, a controller can be removed from the Raft voter set while its historical registration remains in the image. If that registration advertises an older metadata.version range, it can incorrectly prevent a valid metadata.version upgrade. This change exposes the current voter IDs from Raft and passes them through the cluster feature support describer. Feature validation now checks registered controller capabilities only for current quorum voters and requires each current voter to have a registration. Existing describers that do not provide dynamic voter IDs retain the static QuorumFeatures fallback. Testing: - `./gradlew :metadata:test --tests org.apache.kafka.controller.FeatureControlManagerTest --no-build-cache` - `./gradlew :raft:test --tests org.apache.kafka.raft.KafkaRaftClientReconfigTest --no-build-cache` - `./gradlew :metadata:test --no-build-cache` - `./gradlew :metadata:spotlessCheck :raft:spotlessCheck --no-build-cache` - `./gradlew :raft:kafkaPublicApiChecker :metadata:kafkaPublicApiChecker --no-build-cache` - `git diff --check` The regression tests cover both stale registrations from removed voters and missing registrations for current voters. Jira: https://issues.apache.org/jira/browse/KAFKA-20295 -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
