apache / apache/fluss

Expose a human-readable Fluss server version via the client API

Open
#3,966 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
2.1k
Forks
625
Avg merge
3d 14h
Merged PRs (30d)
97

Description

### Search before asking

- [x] I searched in the [issues](https://github.com/apache/fluss/issues) and found nothing similar.

### Motivation

There's currently no way to retrieve a human-readable Fluss version string from a running cluster via the client API. `apiVersions()` is a gateway-level RPC (not on `Admin`) and returns only protocol `api_key`/`min`/`max` numbers plus `server_type` — no semantic version like `0.9.0` or `0.10.1`.

Any tool built on top of Fluss (a CLI, a UI, a monitoring agent) that wants to display which Fluss version a cluster is running — or that needs to adapt its own behavior to what a given server version actually supports (for example, the alterable table-property allow-list in `FlussConfigUtils.isAlterableTableOption` differs across versions) — currently has no way to query this from the server itself; it has to be supplied out-of-band by whoever operates the cluster.

### Solution

Add a way to retrieve the running server's version string, for example:
- A new `Admin` method, e.g. `CompletableFuture getClusterVersion()`, backed by the version already embedded in the server's build metadata, or
- Extending the existing `apiVersions()` gateway RPC response with an optional human-readable version field, alongside the existing protocol min/max numbers.

Either shape would let clients read the version they're talking to without guessing from behavior.

### Anything else?

_No response_

### Willingness to contribute

- [ ] I'm willing to submit a PR!

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reading the Admin client API and the existing apiVersions() gateway RPC described in the issue, then trace where the server build version is available. Compare the two proposed response shapes and check FlussConfigUtils.isAlterableTableOption for the compatibility motivation. Done means a client can query and receive the running server's human-readable semantic version.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
api, backend
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.