org.apache.kafka.common.errors.ReassignmentInProgressException:分区my_topic-0没有进行中的重新分配
org.apache.kafka.common.errors.ReassignmentInProgressException: No reassignment in progress for partition my_topic-0
ID: kafka/no-reassignment-in-progress
根因分析
管理客户端尝试取消或修改一个不存在或已完成的重新分配,原因是元数据过期或分区标识符错误。
English
Admin client attempted to cancel or alter a partition reassignment that does not exist or has already completed, due to stale metadata or incorrect partition identifier.
官方文档
https://kafka.apache.org/documentation/#adminclient_reassignpartitions解决方案
-
First, verify the current reassignment status using `kafka-reassign-partitions.sh --bootstrap-server localhost:9092 --verify --reassignment-json-file reassign.json`. If completed, no further action needed.
-
If the reassignment never started due to a previous error, re-submit the reassignment JSON using `kafka-reassign-partitions.sh --execute` with the correct partition list.
-
Use the AdminClient API: `adminClient.listPartitionReassignments().all().get()` to check active reassignments before attempting cancel. Example Java code: `ListPartitionReassignmentsResult result = adminClient.listPartitionReassignments();`
无效尝试
常见但无效的做法:
-
90% 失败
If the reassignment is already complete, retrying the same cancel will always fail because there is no in-progress reassignment.
-
70% 失败
In modern Kafka (2.6+), reassignments are tracked via the 'reassign_partitions' topic; deleting ZK nodes is ineffective and may cause corruption.
-
80% 失败
Restarting a broker does not affect the reassignment state; the admin client will still see no in-progress reassignment.