Skip to content

cluster features describe: one row per feature, with what the level means - #79

Merged
twmb merged 3 commits into
masterfrom
features-describe
Sep 18, 2026
Merged

twmb merged 3 commits into
masterfrom
features-describe

Conversation

@twmb

@twmb twmb commented Sep 18, 2026

Copy link
Copy Markdown
Owner

cluster features describe printed SUPPORTED rows and then FINALIZED rows, four columns each, with the finalized level repeated as MIN and MAX. It is now one row per feature, the five numbers the Kafka script prints plus what the finalized level means, from kversion's new feature table (franz-go #1462):

FEATURE                           SUPPORTED-MIN  SUPPORTED-MAX  FINALIZED  EPOCH  DESCRIPTION
group.version                     0              1              1          1      the consumer rebalance protocol (KIP-848)
metadata.version                  7              27             27         1      4.1-IV1: replica fetcher sends Fetch v18 (KIP-1166)
share.version                     0              1              0          1      share groups off
transaction.version               0              2              2          1      epoch bump per transaction (KIP-890)

A feature the cluster has not enabled is at FINALIZED 0. A broker that has not learned the cluster's levels (epoch -1) prints FINALIZED, EPOCH, and DESCRIPTION as unknown. DESCRIPTION is free text in awk, like misc errcode's.

franz-go and kfake move to master, which also brings kfake's client metrics subscriptions: client-metrics alter|describe|list|delete now work against kcl fake, and their tests and the walkthrough exercise them instead of pinning INVALID_REQUEST.

Changelog

CHANGED

  • cluster features describe prints one row per feature: SUPPORTED-MIN, SUPPORTED-MAX, FINALIZED, EPOCH, DESCRIPTION; it printed SUPPORTED then FINALIZED rows of KIND NAME MIN-VERSION MAX-VERSION. JSON keys: feature, supported_min, supported_max, finalized, epoch, description.
  • kcl fake stores client metrics subscriptions, so client-metrics alter|describe|list|delete work against it.

UPSTREAM

  • franz-go and kfake at master: kversion feature levels per release, kfake client metrics subscriptions, kfake ApiVersions advertising the features of its --as-version.

kfake stores client metrics subscriptions now, so an alter no longer
answers INVALID_REQUEST. The tests create one, read it back through
list and describe, fail one on a bad interval, and delete it; the
walkthrough seeds a subscription so list and describe have rows.
The table was SUPPORTED rows then FINALIZED rows, four columns each,
with the finalized level repeated as both MIN and MAX. It is now one
row per feature: SUPPORTED-MIN, SUPPORTED-MAX, FINALIZED, EPOCH, and a
DESCRIPTION of the finalized level from kversion, with the KIP to
search for. A feature the cluster has not enabled is at level 0; a
broker that has not learned the cluster's levels prints them unknown.
@twmb
twmb merged commit 6c0dcd1 into master Sep 18, 2026
1 check passed
@twmb
twmb deleted the features-describe branch September 18, 2026 03:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant