Hi all,

As reported in KAFKA-17094 [1], to scale down KRaft-based broker nodes,
they must first be unregistered via the Kafka Admin API. If a node is
removed before being unregistered, it can't be listed for unregistration
because the describeQuorum won't show inactive observer nodes. This happens
because the quorum state excludes nodes that haven't heartbeated within the
observer session timeout [2].

To address this issue, we could stop clearing the observers list, changing
its meaning from "active observer nodes" to "all registered observer
nodes". While the current code implies the list should only include active
nodes, there's no documentation explicitly stating this. Moreover, the
voters list already includes all registered/configured voter nodes,
inactive or not. Making this change would align the behavior of the
observers and voters lists.

Alternatively, we could add another field in the response (requiring a KIP)
to include registered observer nodes that are offline. This would result in
two separate lists: one for active observer nodes and one for inactive
observer nodes.

What are your thoughts on this issue?
[1] https://issues.apache.org/jira/browse/KAFKA-17094
[2]
https://github.com/apache/kafka/blob/trunk/raft/src/main/java/org/apache/kafka/raft/LeaderState.java#L469


Thanks!
Regards,
Gantigmaa Selenge

Reply via email to