dajac commented on code in PR #15205:
URL: https://github.com/apache/kafka/pull/15205#discussion_r1458581509


##########
group-coordinator/src/main/java/org/apache/kafka/coordinator/group/consumer/ConsumerGroupMember.java:
##########
@@ -571,15 +577,29 @@ public ConsumerGroupDescribeResponseData.Member 
asConsumerGroupDescribeMember(As
     }
 
     private static List<ConsumerGroupDescribeResponseData.TopicPartitions> 
topicPartitionsFromMap(
-        Map<Uuid, Set<Integer>> partitions
+        Map<Uuid, Set<Integer>> partitions,
+        Map<String, TopicMetadata> subscriptionMetadata
     ) {
         return partitions.entrySet().stream().map(
             item -> new ConsumerGroupDescribeResponseData.TopicPartitions()
                 .setTopicId(item.getKey())
+                .setTopicName(lookupTopicNameById(item.getKey(), 
subscriptionMetadata))
                 .setPartitions(new ArrayList<>(item.getValue()))
         ).collect(Collectors.toList());
     }
 
+    private static String lookupTopicNameById(
+        Uuid topicId,
+        Map<String, TopicMetadata> subscriptionMetadata
+    ) {
+        for (TopicMetadata topicMetadata : subscriptionMetadata.values()) {
+            if (topicId.equals(topicMetadata.id())) {
+                return topicMetadata.name();
+            }
+        }
+        throw UNKNOWN_TOPIC_ID.exception("The subscription metadata does not 
contain " + topicId);

Review Comment:
   I am not sure about this. It means that when a topic is delete and the group 
has not been updated yet, it won't be possible to describe it. An alternative 
would be to directly remove the topic from the assignment. It will be 
eventually removed anyway. What do you think?



##########
group-coordinator/src/main/java/org/apache/kafka/coordinator/group/consumer/ConsumerGroupMember.java:
##########
@@ -571,15 +577,29 @@ public ConsumerGroupDescribeResponseData.Member 
asConsumerGroupDescribeMember(As
     }
 
     private static List<ConsumerGroupDescribeResponseData.TopicPartitions> 
topicPartitionsFromMap(
-        Map<Uuid, Set<Integer>> partitions
+        Map<Uuid, Set<Integer>> partitions,
+        Map<String, TopicMetadata> subscriptionMetadata
     ) {
         return partitions.entrySet().stream().map(
             item -> new ConsumerGroupDescribeResponseData.TopicPartitions()
                 .setTopicId(item.getKey())
+                .setTopicName(lookupTopicNameById(item.getKey(), 
subscriptionMetadata))
                 .setPartitions(new ArrayList<>(item.getValue()))
         ).collect(Collectors.toList());
     }
 
+    private static String lookupTopicNameById(
+        Uuid topicId,
+        Map<String, TopicMetadata> subscriptionMetadata
+    ) {
+        for (TopicMetadata topicMetadata : subscriptionMetadata.values()) {
+            if (topicId.equals(topicMetadata.id())) {
+                return topicMetadata.name();
+            }
+        }

Review Comment:
   This is pretty bad, isn't it? I was wondering if we could use the 
MetadataImage instead. It would allow us to get the name based on the id.



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