Skip to content

[Bug]: AutoRebalance to remove brokers failed because of kafkaRebalanceState is null #12021

@acgtun

Description

@acgtun

Bug Description

2025-10-12 04:08:10 INFO  KafkaAutoRebalancingReconciler:148 - Reconciliation #107345(watch) Kafka(kafka/preprod): Auto-rebalance on scaling down with KafkaRebalance kafka/preprod-auto-rebalancing- │
│ 2025-10-12 04:08:10 ERROR AbstractOperator:285 - Reconciliation #107345(watch) Kafka(kafka/preprod): createOrUpdate failed                                                                            │
│ java.lang.NullPointerException: Cannot invoke "io.strimzi.api.kafka.model.rebalance.KafkaRebalanceState.ordinal()" because "kafkaRebalanceState" is null                                              │
│     at io.strimzi.operator.cluster.operator.assembly.KafkaAutoRebalancingReconciler.lambda$onRebalanceOnScaleDown$8(KafkaAutoRebalancingReconciler.java:152) ~[io.strimzi.cluster-operator-0.47.0.jar │
│     at io.vertx.core.impl.future.Composition.complete(Composition.java:40) ~[io.vertx.vertx-core-5.0.1.jar:5.0.1]                                                                                     │
│     at io.vertx.core.impl.future.FutureBase.lambda$emitResult$0(FutureBase.java:59) ~[io.vertx.vertx-core-5.0.1.jar:5.0.1]                                                                            │
│     at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148) ~[io.netty.netty-common-4.2.2.Final.jar:4.2.2.Final]                                                    │
│     at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141) ~[io.netty.netty-common-4.2.2.Final.jar:4.2.2.Final]                                                │
│     at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507) ~[io.netty.netty-common-4.2.2.Final.jar:4.2.2.Final]                                        │
│     at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:182) ~[io.netty.netty-transport-4.2.2.Final.jar:4.2.2.Final]                                                         │
│     at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073) ~[io.netty.netty-common-4.2.2.Final.jar:4.2.2.Final]                                             │
│     at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[io.netty.netty-common-4.2.2.Final.jar:4.2.2.Final]                                                                 │
│     at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[io.netty.netty-common-4.2.2.Final.jar:4.2.2.Final]                                                     │
│     at java.lang.Thread.run(Thread.java:840) ~[?:?]                                                                                                                                                   │
│ 2025-10-12 04:08:10 WARN  AbstractOperator:566 - Reconciliation #107345(watch) Kafka(kafka/preprod): Failed to reconcile                                                                              │
│ java.lang.NullPointerException: Cannot invoke "io.strimzi.api.kafka.model.rebalance.KafkaRebalanceState.ordinal()" because "kafkaRebalanceState" is null                                              │
│     at io.strimzi.operator.cluster.operator.assembly.KafkaAutoRebalancingReconciler.lambda$onRebalanceOnScaleDown$8(KafkaAutoRebalancingReconciler.java:152) ~[io.strimzi.cluster-operator-0.47.0.jar │
│     at io.vertx.core.impl.future.Composition.complete(Composition.java:40) ~[io.vertx.vertx-core-5.0.1.jar:5.0.1]                                                                                     │
│     at io.vertx.core.impl.future.FutureBase.lambda$emitResult$0(FutureBase.java:59) ~[io.vertx.vertx-core-5.0.1.jar:5.0.1]                                                                            │
│     at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148) ~[io.netty.netty-common-4.2.2.Final.jar:4.2.2.Final]                                                    │
│     at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141) ~[io.netty.netty-common-4.2.2.Final.jar:4.2.2.Final]                                                │
│     at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:507) ~[io.netty.netty-common-4.2.2.Final.jar:4.2.2.Final]                                        │
│     at io.netty.channel.SingleThreadIoEventLoop.run(SingleThreadIoEventLoop.java:182) ~[io.netty.netty-transport-4.2.2.Final.jar:4.2.2.Final]                                                         │
│     at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1073) ~[io.netty.netty-common-4.2.2.Final.jar:4.2.2.Final]                                             │
│     at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[io.netty.netty-common-4.2.2.Final.jar:4.2.2.Final]                                                                 │
│     at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[io.netty.netty-common-4.2.2.Final.jar:4.2.2.Final]                                                     │
│     at java.lang.Thread.run(Thread.java:840) ~[?:?]

Steps to reproduce

  1. enable autoRealance for remove-broker
  2. reduce kafkanodepool broker from 20 nodes to 10 nodes

Expected behavior

No response

Strimzi version

0.47.0

Kubernetes version

Client Version: v1.29.12 Server Version: v1.30.3

Installation method

argoCD

Infrastructure

kubernetes cluster

Configuration files and logs

No response

Additional context

Actually, the data was already moved out by cruise-control, but the partitions were not moved out. Later, I manually run a reassignment command to assign replicas to other brokers (0 to 9), after that, the AutoRebalance immediately remove broker 10 to 19.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions