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:
[email protected]