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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]