You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by da...@apache.org on 2023/12/05 08:32:58 UTC

(kafka) branch trunk updated: MINOR: Add Uniform assignor to the default config (#14826)

This is an automated email from the ASF dual-hosted git repository.

dajac pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/kafka.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 34e1dbbaba1 MINOR: Add Uniform assignor to the default config (#14826)
34e1dbbaba1 is described below

commit 34e1dbbaba15e8f053f68e998bb21e1ed62bdaf9
Author: David Jacot <dj...@confluent.io>
AuthorDate: Tue Dec 5 09:32:50 2023 +0100

    MINOR: Add Uniform assignor to the default config (#14826)
    
    This patch adds the `Uniform` assignor to the default list of supported assignors. It also do small changes in the code.
    
    Reviewers: Justine Olshan <jo...@confluent.io>
---
 core/src/main/scala/kafka/server/KafkaConfig.scala                   | 4 ++--
 .../org/apache/kafka/coordinator/group/GroupMetadataManager.java     | 5 +++--
 .../org/apache/kafka/coordinator/group/assignor/UniformAssignor.java | 3 ++-
 3 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/core/src/main/scala/kafka/server/KafkaConfig.scala b/core/src/main/scala/kafka/server/KafkaConfig.scala
index 603e8c90b26..8aef3cab22b 100755
--- a/core/src/main/scala/kafka/server/KafkaConfig.scala
+++ b/core/src/main/scala/kafka/server/KafkaConfig.scala
@@ -42,7 +42,7 @@ import org.apache.kafka.common.security.auth.KafkaPrincipalSerde
 import org.apache.kafka.common.security.auth.SecurityProtocol
 import org.apache.kafka.common.security.authenticator.DefaultKafkaPrincipalBuilder
 import org.apache.kafka.common.utils.Utils
-import org.apache.kafka.coordinator.group.assignor.{PartitionAssignor, RangeAssignor}
+import org.apache.kafka.coordinator.group.assignor.{PartitionAssignor, RangeAssignor, UniformAssignor}
 import org.apache.kafka.raft.RaftConfig
 import org.apache.kafka.server.authorizer.Authorizer
 import org.apache.kafka.server.common.{MetadataVersion, MetadataVersionValidator}
@@ -176,7 +176,7 @@ object Defaults {
   val ConsumerGroupMinHeartbeatIntervalMs = 5000
   val ConsumerGroupMaxHeartbeatIntervalMs = 15000
   val ConsumerGroupMaxSize = Int.MaxValue
-  val ConsumerGroupAssignors = List(classOf[RangeAssignor].getName).asJava
+  val ConsumerGroupAssignors = List(classOf[UniformAssignor].getName, classOf[RangeAssignor].getName).asJava
 
   /** ********* Offset management configuration ***********/
   val OffsetMetadataMaxSize = OffsetConfig.DefaultMaxMetadataSize
diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java
index 1de63d714f9..3f47b49240f 100644
--- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java
+++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/GroupMetadataManager.java
@@ -1109,8 +1109,9 @@ public class GroupMetadataManager {
                     assignmentResult = assignmentResultBuilder
                         .build();
                 }
-                log.info("[GroupId {}] Computed a new target assignment for epoch {}: {}.",
-                    groupId, groupEpoch, assignmentResult.targetAssignment());
+
+                log.info("[GroupId {}] Computed a new target assignment for epoch {} with '{}' assignor: {}.",
+                    groupId, groupEpoch, preferredServerAssignor, assignmentResult.targetAssignment());
 
                 records.addAll(assignmentResult.records());
                 targetAssignment = assignmentResult.targetAssignment().get(memberId);
diff --git a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/assignor/UniformAssignor.java b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/assignor/UniformAssignor.java
index 1dc34fd2cb3..228acc688c5 100644
--- a/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/assignor/UniformAssignor.java
+++ b/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/assignor/UniformAssignor.java
@@ -96,7 +96,8 @@ public class UniformAssignor implements PartitionAssignor {
     private boolean allSubscriptionsEqual(Map<String, AssignmentMemberSpec> members) {
         Set<Uuid> firstSubscriptionSet = new HashSet<>(members.values().iterator().next().subscribedTopicIds());
         for (AssignmentMemberSpec memberSpec : members.values()) {
-            if (!firstSubscriptionSet.equals(new HashSet<>(memberSpec.subscribedTopicIds()))) {
+            if (firstSubscriptionSet.size() != memberSpec.subscribedTopicIds().size() ||
+                !firstSubscriptionSet.containsAll(memberSpec.subscribedTopicIds())) {
                 return false;
             }
         }