You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[client] Expose all coordinator servers (leader and standbys) via the client API #4117
I searched in the issues and found nothing similar.
Motivation
Since coordinator HA (1.0), a cluster may run several coordinator servers, but the client API still surfaces exactly one: MetadataResponse carries a single coordinator_server (the current leader), and Admin#getServerNodes() returns that node plus the alive tablet servers. Standby coordinators are invisible to clients — they reject every request except apiVersions with NotCoordinatorLeaderException.
Operational tooling (consoles, operators, CLIs) needs to display and verify the HA topology: how many coordinators exist, which one is the leader, and whether the standbys are alive. Today the only sources are out-of-band — ZooKeeper or the deployment platform (for example, Kubernetes pods) — which not every client can or should reach.
Include a liveness signal per coordinator (for example, presence in the election group), so a dead standby is distinguishable from a live one.
Related: #4105 needs a readiness signal that is valid for standby coordinators; a client-visible role/liveness API could serve that consumer too. The request handler's blanket rejection of all non-leader requests is already marked as provisional in a code comment (FlussRequestHandler) — serving this (read-only) call from a standby would be consistent with narrowing that check.
Anything else?
Affected areas: fluss-rpc (FlussApi.proto: metadata or a new describe message), fluss-server (CoordinatorService, election-group state), fluss-client (Admin).
@striver619 thanks for the pointer!
This issue is about adding the information of standby replicas into the Fluss RPC calls, I think your PR is about documentation.
@affo, I would like to work on this issue. I'll implement the feature to expose all coordinator servers (leader and standbys) via the client API with the following approach:
Create a CoordinatorRole enum to distinguish between leader and standby coordinators
Extend the proto messages (PbCoordinatorServerInfo) to include coordinator role and liveness information in MetadataResponse
Modify the server-side logic to collect all registered coordinators from ZooKeeper (/coordinators/ids) with their current role (from /coordinators/active)
Add a liveness indicator by checking coordinator presence in the election group
Extend Admin#getServerNodes() to return all coordinators (leader + standbys) along with tablets servers
Update client-side Cluster and MetadataUpdater to track and expose all coordinators
This will enable operational tooling to:
Display the HA topology (how many coordinators, which is leader, standby status)
Activity
striver619 commentedon Aug 27, 2026
@affo
i already add this pr: #4111 about coordinator ha
affo commentedon Aug 31, 2026
@striver619 thanks for the pointer!
This issue is about adding the information of standby replicas into the Fluss RPC calls, I think your PR is about documentation.
Am I missing something?
MaheshS08 commentedon Sep 4, 2026
@affo, I would like to work on this issue. I'll implement the feature to expose all coordinator servers (leader and standbys) via the client API with the following approach:
CoordinatorRoleenum to distinguish between leader and standby coordinatorsPbCoordinatorServerInfo) to include coordinator role and liveness information inMetadataResponse/coordinators/ids) with their current role (from/coordinators/active)Admin#getServerNodes()to return all coordinators (leader + standbys) along with tablets serversClusterandMetadataUpdaterto track and expose all coordinatorsThis will enable operational tooling to:
The implementation will maintain backward compatibility while providing the new visibility into the coordinator HA setup.