[ 
https://issues.apache.org/jira/browse/KAFKA-16892?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

HanXu updated KAFKA-16892:
--------------------------
    Description: 
MetadataLoader#loadSnapshot get empty TopicsDelta.localChanges(brokerId).deletes

https://github.com/apache/kafka/blob/02c794dfd3bda12066031155bd62234ad863860b/metadata/src/main/java/org/apache/kafka/image/TopicsDelta.java#L71C1-L76C6


Bug:
1. When generating MetadataDelta from Snapshot, TopicsDelta will first 
#replay(TopicRecord);
2. However, TopicsDelta directly creates a TopicDelta without any Partitions, 
instead of using the previous TopicImage;
3. Because TopicDelta.image has no Partitions, when TopicDelta#localChanges 
generates the deletes list, it returns empty deletes.

https://github.com/apache/kafka/blob/02c794dfd3bda12066031155bd62234ad863860b/metadata/src/main/java/org/apache/kafka/image/TopicsDelta.java#L71C1-L76C6

https://github.com/apache/kafka/blob/02c794dfd3bda12066031155bd62234ad863860b/metadata/src/main/java/org/apache/kafka/image/TopicDelta.java#L142-L148

  was:
MetadataLoader#loadSnapshot get empty TopicsDelta.localChanges(brokerId).deletes

https://github.com/apache/kafka/blob/02c794dfd3bda12066031155bd62234ad863860b/metadata/src/main/java/org/apache/kafka/image/TopicsDelta.java#L71C1-L76C6


Bug:
1. 当从 Snapshot 中生成 MetadataDelta 时,TopicsDelta 会首先 #replay(TopicRecord);
2. 然而 TopicsDelta 直接创建了一个无 Partitions 的 TopicDelta,而不是使用之前的 TopicImage;
3. 因为 TopicDelta.image 没有任何 Partitions,导致 TopicDelta#localChanges 生成 deletes 
列表时,返回了 empty deletes;

https://github.com/apache/kafka/blob/02c794dfd3bda12066031155bd62234ad863860b/metadata/src/main/java/org/apache/kafka/image/TopicsDelta.java#L71C1-L76C6

https://github.com/apache/kafka/blob/02c794dfd3bda12066031155bd62234ad863860b/metadata/src/main/java/org/apache/kafka/image/TopicDelta.java#L142-L148


> TopicsDelta#localChanges get empty deletes when load from snapshot
> ------------------------------------------------------------------
>
>                 Key: KAFKA-16892
>                 URL: https://issues.apache.org/jira/browse/KAFKA-16892
>             Project: Kafka
>          Issue Type: Bug
>          Components: kraft
>    Affects Versions: 3.4.0, 3.5.0, 3.6.0, 3.7.0
>            Reporter: HanXu
>            Assignee: HanXu
>            Priority: Minor
>
> MetadataLoader#loadSnapshot get empty 
> TopicsDelta.localChanges(brokerId).deletes
> https://github.com/apache/kafka/blob/02c794dfd3bda12066031155bd62234ad863860b/metadata/src/main/java/org/apache/kafka/image/TopicsDelta.java#L71C1-L76C6
> Bug:
> 1. When generating MetadataDelta from Snapshot, TopicsDelta will first 
> #replay(TopicRecord);
> 2. However, TopicsDelta directly creates a TopicDelta without any Partitions, 
> instead of using the previous TopicImage;
> 3. Because TopicDelta.image has no Partitions, when TopicDelta#localChanges 
> generates the deletes list, it returns empty deletes.
> https://github.com/apache/kafka/blob/02c794dfd3bda12066031155bd62234ad863860b/metadata/src/main/java/org/apache/kafka/image/TopicsDelta.java#L71C1-L76C6
> https://github.com/apache/kafka/blob/02c794dfd3bda12066031155bd62234ad863860b/metadata/src/main/java/org/apache/kafka/image/TopicDelta.java#L142-L148



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to