jsancio commented on code in PR #19589:
URL: https://github.com/apache/kafka/pull/19589#discussion_r2075859850


##########
raft/src/main/java/org/apache/kafka/raft/KafkaRaftClient.java:
##########
@@ -3274,6 +3320,38 @@ private long pollFollowerAsVoter(FollowerState state, 
long currentTimeMs) {
     private long pollFollowerAsObserver(FollowerState state, long 
currentTimeMs) {
         if (state.hasFetchTimeoutExpired(currentTimeMs)) {
             return maybeSendFetchToAnyBootstrap(currentTimeMs);
+        } else if (partitionState.lastKraftVersion().isReconfigSupported() && 
followersAlwaysFlush &&
+            quorumConfig.autoJoin() && 
state.hasUpdateVoterPeriodExpired(currentTimeMs)) {
+            /* `followersAlwaysFlush` is true when the config `process.roles` 
contains "controller".
+             * We require both `followersAlwaysFlush` and `autoJoin` to be 
true because
+             * brokers should not be able to add themselves as a KRaft voter.
+             */

Review Comment:
   Let's remove any reference to "process.roles", "controller" and "broker". We 
don't always succeed but we should try to make KRaft agnostic of cluster 
metadata's use case. How about:
   ```java
   /* Only replicas that are always flushing and are configured to auto join 
should
    * attempt to automatically join the voter set for the configured topic 
partition.
    */
   ```



-- 
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: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to