squah-confluent commented on code in PR #19677:
URL: https://github.com/apache/kafka/pull/19677#discussion_r2086619092


##########
group-coordinator/src/main/java/org/apache/kafka/coordinator/group/assignor/UniformHomogeneousAssignmentBuilder.java:
##########
@@ -218,6 +234,15 @@ private void maybeRevokePartitions() {
                 targetAssignment.put(memberId, new 
MemberAssignmentImpl(newAssignment));
             }
         }
+
+        // Distribute the remaining extra partitions to the members that are 
at or under the minimum
+        // quota. When there are remaining extra partitions, we can't run out 
of unfilledMembers
+        // here because all members either subtracted from 
remainingMembersToGetAnExtraPartition or
+        // went into the unfilledMembers list.
+        for (int i = 0; i < remainingMembersToGetAnExtraPartition; i++) {
+            unfilledMembers.get(i).remainingQuota++;
+        }
+        remainingMembersToGetAnExtraPartition = 0;

Review Comment:
   Updated the PR and it looks a lot cleaner.
   
   It doesn't look like there's a noticeable performance impact.
   Before the PR
   ```
   Benchmark                                 (assignmentType)  (assignorType)  
(isRackAware)  (memberCount)  (partitionsToMemberRatio)  (subscriptionType)  
(topicCount)  Mode  Cnt    Score   Error  Units
   ServerSideAssignorBenchmark.doAssignment              FULL           RANGE   
       false          10000                         50         HOMOGENEOUS      
    1000  avgt    2   26.175          ms/op
   ServerSideAssignorBenchmark.doAssignment              FULL           RANGE   
       false          10000                         50       HETEROGENEOUS      
    1000  avgt    2  123.955          ms/op
   ServerSideAssignorBenchmark.doAssignment       INCREMENTAL           RANGE   
       false          10000                         50         HOMOGENEOUS      
    1000  avgt    2   24.408          ms/op
   ServerSideAssignorBenchmark.doAssignment       INCREMENTAL           RANGE   
       false          10000                         50       HETEROGENEOUS      
    1000  avgt    2  114.873          ms/op
   ```
   After the PR
   ```
   Benchmark                                 (assignmentType)  (assignorType)  
(isRackAware)  (memberCount)  (partitionsToMemberRatio)  (subscriptionType)  
(topicCount)  Mode  Cnt    Score   Error  Units
   ServerSideAssignorBenchmark.doAssignment              FULL           RANGE   
       false          10000                         50         HOMOGENEOUS      
    1000  avgt    2   24.259          ms/op
   ServerSideAssignorBenchmark.doAssignment              FULL           RANGE   
       false          10000                         50       HETEROGENEOUS      
    1000  avgt    2  118.513          ms/op
   ServerSideAssignorBenchmark.doAssignment       INCREMENTAL           RANGE   
       false          10000                         50         HOMOGENEOUS      
    1000  avgt    2   24.636          ms/op
   ServerSideAssignorBenchmark.doAssignment       INCREMENTAL           RANGE   
       false          10000                         50       HETEROGENEOUS      
    1000  avgt    2  115.503          ms/op
   ```



-- 
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