Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Status

Current state: Under Discussion

Discussion thread: https://lists.apache.org/thread/01bs42crlkn5jr1r846vflp293zv2t86

JIRA: KAFKA-20018

Motivation

The `kafka-feature.sh` command-line tool currently has two issues that impact usability and consistency:

...

The `MutuallyExclusiveGroup` for `--bootstrap-server` and `--bootstrap-controller` will be removed from the top-level parser. Instead, this required argument group will be added individually to each of the subcommands that require a live cluster connection: `describe`, `upgrade`, `downgrade`, and `disable`. This change makes the arguments required only when one of these specific subcommands is chosen, allowing offline commands to run without them.

Breaking Change Warning Message

Since this is a breaking change, it should be introduced in 5.0. A warning message will be added to the helping string in 4.x telling users that the group will be removed from the top level and become arguments under specific commands.

Expose Unstable Version Flag in version-mapping:

A new boolean flag, `--unstable-feature-versions`, will be added to the `version-mapping` subcommand in both `kafka-feature.sh` and `kafka-storage.sh`. When this flag is present, the tool will call `MetadataVersion.fromVersionString()` with the unstableFeatureVersionsEnabled flag set to true, allowing users to see feature mappings for development and testing versions. By default (without the flag), only production/stable metadata versions will be included.


Excluding unstable feature versions is the behavior before KAFKA-19544, so this is not a breaking change and can be introduced in 4.x.

New and Changed Public Interfaces

...

The `--bootstrap-server` / `--bootstrap-controller` arguments are no longer valid as top-level arguments. They must now be specified after the subcommand (e.g., `kafka-feature.sh describe --bootstrap-server ...`). 

Scripts invoking offline commands will no longer require these arguments.

...

This KIP introduces a breaking change to the command-line interface of kafka-feature.sh. Users must update existing scripts that use `kafka-features.sh`.

...