jolshan commented on a change in pull request #11459:
URL: https://github.com/apache/kafka/pull/11459#discussion_r750452149



##########
File path: core/src/main/scala/kafka/server/ReplicaManager.scala
##########
@@ -1401,6 +1401,12 @@ class ReplicaManager(val config: KafkaConfig,
                     if (partitionState.leader != localBrokerId)
                       topicIdUpdateFollowerPartitions.add(partition)
                     Errors.NONE
+                  case None if logTopicId.isDefined =>
+                    // If we have a topic ID in the log but not in the 
request, we must have previously had topic IDs but
+                    // are now downgrading. If we are a follower, remove the 
topic ID from the PartitionFetchState.
+                    if (partitionState.leader != localBrokerId)
+                      topicIdUpdateFollowerPartitions.add(partition)

Review comment:
       As mentioned in the PR description:
   
   
   > This PR removes the topic IDs from the PartitionFetchState if the log 
contains a topic ID but the request does not. This means that we will always 
handle a leader and isr request if there is no ID in the request but an ID in 
the log.
   Such a state should be transient because we are either
   * upgrading the cluster and somehow switched between a new IBP controller 
and an old one --> and will eventually have all new IBP controllers/brokers.
   * downgrading the cluster --> will eventually have all old IBP 
controllers/brokers and will restart the broker/delete the partition metadata 
file for them.




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