You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "jacky (Jira)" <ji...@apache.org> on 2021/04/18 06:08:00 UTC

[jira] [Updated] (KAFKA-12682) Kraft MetadataPartitionsBuilder _localChanged and _localRemoved out of order

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

jacky updated KAFKA-12682:
--------------------------
    Description: 
In version 2.8, MetadataPartitionsBuilder has the field _localChanged and _localRemoved which record the change and delete partition, but we always process _localChanged partitions, and then _localRemoved in the kafka.server.RaftReplicaManager#handleMetadataRecords, not respect the original order, for example, 
1. migrate the partition p1 from b0 to b1;
2. change the leader of p1 
3.migrate p1 from b1 to b0
and the _localRemoved will delete the p1 at last.

I think handleMetadataRecords process batch records, and the records need duplicate removal group by partition and operation(change(create ,update), delete)。
for example,
create topic t1, delete topic t1, create topic t1, change leader of p1
and then compact the records 
create topic t1, delete topic t1, change t1, p1

but currently, implementation will be
1. process change t1, p1
2. process delete topic t1

  was:
In version 2.8, MetadataPartitionsBuilder has the field _localChanged and _localRemoved which record the change and delete partition, but we always process _localChanged partitions, and then _localRemoved in the kafka.server.RaftReplicaManager#handleMetadataRecords, not respect the original order, for example, 
1. migrate the partition p1 from b0 to b1;
2. change the leader of p1 
3.migrate p1 from b1 to b0
and the _localRemoved will delete the p1 at last.


> Kraft MetadataPartitionsBuilder _localChanged and _localRemoved out of order 
> -----------------------------------------------------------------------------
>
>                 Key: KAFKA-12682
>                 URL: https://issues.apache.org/jira/browse/KAFKA-12682
>             Project: Kafka
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 2.8.0
>            Reporter: jacky
>            Priority: Minor
>
> In version 2.8, MetadataPartitionsBuilder has the field _localChanged and _localRemoved which record the change and delete partition, but we always process _localChanged partitions, and then _localRemoved in the kafka.server.RaftReplicaManager#handleMetadataRecords, not respect the original order, for example, 
> 1. migrate the partition p1 from b0 to b1;
> 2. change the leader of p1 
> 3.migrate p1 from b1 to b0
> and the _localRemoved will delete the p1 at last.
> I think handleMetadataRecords process batch records, and the records need duplicate removal group by partition and operation(change(create ,update), delete)。
> for example,
> create topic t1, delete topic t1, create topic t1, change leader of p1
> and then compact the records 
> create topic t1, delete topic t1, change t1, p1
> but currently, implementation will be
> 1. process change t1, p1
> 2. process delete topic t1



--
This message was sent by Atlassian Jira
(v8.3.4#803005)