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