FrankYang0529 commented on code in PR #19761:
URL: https://github.com/apache/kafka/pull/19761#discussion_r2107213749
##########
group-coordinator/src/main/java/org/apache/kafka/coordinator/group/Utils.java:
##########
@@ -349,12 +349,19 @@ static void throwIfRegularExpressionIsInvalid(
* @return The hash of the group.
*/
static long computeGroupHash(Map<String, Long> topicHashes) {
- if (topicHashes.isEmpty()) {
+ // Sort entries by topic name
+ List<Map.Entry<String, Long>> sortedEntries = new ArrayList<>();
+ for (Map.Entry<String, Long> entry : topicHashes.entrySet()) {
+ // Filter out entries with a hash value of 0, which indicates no
topic
+ if (entry.getValue() != 0) {
Review Comment:
We use `computeSubscribedTopicNames` to get `subscribedTopicNames` and use
the result to calculate topic hashes which group wants to subscribe to.
However, the `computeSubscribedTopicNames` doesn't check whether a topic is
really existent. If a group subscribes to a non-existent topic, the topic is in
`subscribedTopicNames` and the `computeMetadataHash` uses non-existent topic
hash as part of metadata hash.
A sample case is `testSubscriptionMetadataRefreshedAgainAfterWriteFailure`.
The group subscribes to `foo` and `bar`, but `bar` topic is not in metadata
image.
https://github.com/apache/kafka/blob/48a52701b9cd45c4854f910990a85be7d73e22f5/group-coordinator/src/main/java/org/apache/kafka/coordinator/group/modern/ModernGroup.java#L496-L507
--
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]