Kafka无法将分区的状态从OnlinePartition更改为OnlinePartition



我正在查看日志,查找我们最近在Kafka中遇到的一个问题,在这个问题中,我们最终使用了全偏移倒带。从日志中可以看出,我们有三个副本中的两个同时退出,或者至少其中一个节点日志是这么说的。大约在那个时候,我看到下面的日志消息用不同的分区名称重复了很多次:

ERROR [Controller id=0 epoch=71] Controller 0 epoch 71 failed to change state for partition PARTITION.NAME from OnlinePartition to 
OnlinePartition (state.change.logger) kafka.common.StateChangeFailedException: Failed to elect leader for partition PARTITION.NAME under strategy PreferredReplicaPartitionLeaderElectionStrategy
at kafka.controller.PartitionStateMachine$$anonfun$doElectLeaderForPartitions$3.apply(PartitionStateMachine.scala:328)
at ...

奇怪的是这个部分写着

从OnlinePartition到OnlinePartition

当我在谷歌上搜索这个时,我没有找到任何真正有用的东西。另一件事是,所有出现的东西似乎都很古老,都是指卡夫卡1.0之前的版本。我们应该运行1.1.0。

有什么想法吗?为什么会有人试图将分区改变为它看起来已经处于的状态?我想我能理解这怎么会被视为失败,因为什么都不会改变,但总的来说,这似乎是荒谬的。

根据Kafka控制器内部页面,当应该选择新的分区领导者时,这是一个有效的状态转换:

有效的状态转换为:

联机分区、脱机分区->联机分区

  1. 为此分区和一组副本选择新的leader和isr以接收LeaderAndIsr请求,并将leader和isr写入ZK

    cPreferredReplicaPartitionLeaderSelector:new leader=第一个分配的副本(如果在isr中(;new isr=当前isr;接收副本=分配的副本

  2. 向每个接收发送LeaderAndIsr请求向每个实时代理发送副本和UpdateMetadata请求


编辑

关于重置偏移,您能否检查KAFKA-6189是否适用于您的情况。如果没有,请分享您的集群、主题和使用者组的配置详细信息。

最新更新