junrao commented on code in PR #15968: URL: https://github.com/apache/kafka/pull/15968#discussion_r2072132880
########## core/src/main/scala/kafka/server/KafkaApis.scala: ########## @@ -396,57 +396,72 @@ class KafkaApis(val requestChannel: RequestChannel, } } - val unauthorizedTopicResponses = mutable.Map[TopicPartition, PartitionResponse]() - val nonExistingTopicResponses = mutable.Map[TopicPartition, PartitionResponse]() - val invalidRequestResponses = mutable.Map[TopicPartition, PartitionResponse]() - val authorizedRequestInfo = mutable.Map[TopicPartition, MemoryRecords]() + val unauthorizedTopicResponses = mutable.Map[TopicIdPartition, PartitionResponse]() + val nonExistingTopicResponses = mutable.Map[TopicIdPartition, PartitionResponse]() + val invalidRequestResponses = mutable.Map[TopicIdPartition, PartitionResponse]() + val authorizedRequestInfo = mutable.Map[TopicIdPartition, MemoryRecords]() + val topicIdToPartitionData = new mutable.ArrayBuffer[(TopicIdPartition, ProduceRequestData.PartitionProduceData)] + + produceRequest.data.topicData.forEach { topic => + topic.partitionData.forEach { partition => + val (topicName, topicId) = if (topic.topicId().equals(Uuid.ZERO_UUID)) { + (topic.name(), metadataCache.getTopicId(topic.name())) + } else { + (metadataCache.getTopicName(topic.topicId).orElse(topic.name), topic.topicId()) + } + + val topicPartition = new TopicPartition(topicName, partition.index()) + if (topicName.isEmpty) + nonExistingTopicResponses += new TopicIdPartition(topicId, topicPartition) -> new PartitionResponse(Errors.UNKNOWN_TOPIC_ID) + else if (!metadataCache.contains(topicPartition)) + nonExistingTopicResponses += new TopicIdPartition(topicId, topicPartition) -> new PartitionResponse(Errors.UNKNOWN_TOPIC_OR_PARTITION) Review Comment: This seems to be a regression. Since topic name is sensitive, if the topic name doesn't exist and is not authorized, we should return TOPIC_AUTHORIZATION_FAILED, instead of UNKNOWN_TOPIC_OR_PARTITION. Filed https://issues.apache.org/jira/browse/KAFKA-19234 to track it. -- 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