jolshan commented on a change in pull request #9626: URL: https://github.com/apache/kafka/pull/9626#discussion_r543691182
########## File path: core/src/main/scala/kafka/controller/KafkaController.scala ########## @@ -1378,12 +1378,26 @@ class KafkaController(val config: KafkaConfig, val offlineReplicas = new ArrayBuffer[TopicPartition]() val onlineReplicas = new ArrayBuffer[TopicPartition]() - leaderAndIsrResponse.partitions.forEach { partition => - val tp = new TopicPartition(partition.topicName, partition.partitionIndex) - if (partition.errorCode == Errors.KAFKA_STORAGE_ERROR.code) - offlineReplicas += tp - else if (partition.errorCode == Errors.NONE.code) - onlineReplicas += tp + if (leaderAndIsrResponse.topics().isEmpty) { + leaderAndIsrResponse.partitions.forEach { partition => + val topicName = partition.topicName + val tp = new TopicPartition(topicName, partition.partitionIndex) + if (partition.errorCode == Errors.KAFKA_STORAGE_ERROR.code) + offlineReplicas += tp + else if (partition.errorCode == Errors.NONE.code) + onlineReplicas += tp + } + } + + leaderAndIsrResponse.topics.forEach { topic => + val topicName = controllerContext.topicNames.get(topic.topicId).get Review comment: I moved this logic to LeaderAndIsrResponse which is java code, so it behaves a bit differently. (We may want to move back though, and if so, I'll do this.) For now I do a null check in the java code. One question I have though is what does it mean to not have a topic in the context? Is it possible to send a leaderAndIsrRequest with an unknown partition/one not in the context? I can only think maybe the topic gets deleted while handling the request. What would the normal error handling case be in that scenario? ---------------------------------------------------------------- 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org