HanXu created KAFKA-16892:
-----------------------------
Summary: 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.7.0, 3.6.0, 3.5.0, 3.4.0
Reporter: HanXu
Assignee: HanXu
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
--
This message was sent by Atlassian Jira
(v8.20.10#820010)