Skip to content

KAFKA-19719: --no-initial-controllers should not assume kraft.version=1#20595

Closed
kevin-wu24 wants to merge 1 commit into
apache:4.1from
kevin-wu24:KAFKA-19719-cherry-41
Closed

KAFKA-19719: --no-initial-controllers should not assume kraft.version=1#20595
kevin-wu24 wants to merge 1 commit into
apache:4.1from
kevin-wu24:KAFKA-19719-cherry-41

Conversation

@kevin-wu24

@kevin-wu24 kevin-wu24 commented Sep 25, 2025

Copy link
Copy Markdown
Contributor

Just because a controller node sets --no-initial-controllers flag does not mean it is necessarily running kraft.version=1. The more precise meaning is that the controller node being formatted does not know what kraft version the cluster should be in, and therefore it is only safe to assume kraft.version=0. Only by setting
--standalone,--initial-controllers, or --no-initial-controllers AND not specifying the controller.quorum.voters static config, is it known kraft.version > 0.

For example, it is a valid configuration (although confusing) to run a
static quorum defined by controller.quorum.voters but have all the
controllers format with --no-initial-controllers. In this case,
specifying --no-initial-controllers alongside a metadata version that
does not support kraft.version=1 causes formatting to fail, which is
a regression.

Additionally, the formatter should not check the kraft.version against the release version, since kraft.version does not actually depend on any release version. It should only check the kraft.version against the static voters config/format arguments.

Reviewers: TengYao Chi kitingiao@gmail.com, Kuan-Po Tseng
brandboat@gmail.com, Chia-Ping Tsai chia7712@gmail.com, José
Armando García Sancio jsancio@apache.org
Conflicts:
core/src/main/scala/kafka/tools/StorageTool.scala
Minor conflicts.
core/src/test/java/kafka/server/ReconfigurableQuorumIntegrationTest.java
Revert integration test changes to simplify PR. Some tests are not valid in 4.1.
docs/ops.html
Keep new docs changes.
metadata/src/test/java/org/apache/kafka/metadata/storage/FormatterTest.java
Minor conflicts. Keep new tests.
test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/KafkaClusterTestKit.java
Revert integration test changes to simplify PR.

…=1 (apache#20551)

Just because a controller node sets --no-initial-controllers flag does
not mean it is necessarily running kraft.version=1. The more precise
meaning is that the controller node being formatted does not know what
kraft version the cluster should be in, and therefore it is only safe to
assume kraft.version=0. Only by setting
--standalone,--initial-controllers, or --no-initial-controllers
AND not specifying the controller.quorum.voters static config, is it
known kraft.version > 0.

For example, it is a valid configuration (although confusing) to run a
static   quorum defined by controller.quorum.voters but have all the
controllers   format with --no-initial-controllers. In this case,
specifying --no-initial-controllers alongside a metadata version that
does not  support kraft.version=1 causes formatting to fail, which is
a  regression.

Additionally, the formatter should not check the kraft.version against
the release version, since kraft.version does not actually depend on any
release version. It should only check the kraft.version against the
static voters config/format arguments.

This PR also cleans up the integration test framework to match the
semantics of formatting an actual cluster.

Reviewers: TengYao Chi <kitingiao@gmail.com>, Kuan-Po Tseng
 <brandboat@gmail.com>, Chia-Ping Tsai <chia7712@gmail.com>, José
 Armando García Sancio <jsancio@apache.org>
Conflicts:
	core/src/main/scala/kafka/tools/StorageTool.scala
		Minor conflicts.
	core/src/test/java/kafka/server/ReconfigurableQuorumIntegrationTest.java
		Revert integration test changes to simplify PR. Some tests are not valid in 4.1.
	docs/ops.html
		Keep new docs changes.
	metadata/src/test/java/org/apache/kafka/metadata/storage/FormatterTest.java
		Minor conflicts. Keep new tests.
	test-common/test-common-runtime/src/main/java/org/apache/kafka/common/test/KafkaClusterTestKit.java
		Revert integration test changes to simplify PR.
@kevin-wu24

Copy link
Copy Markdown
Contributor Author

I messed up the cherry-pick. I need to keep the integration test changes, otherwise the existing tests break. I'm going to pick this again in a new PR @frankvicky.

@kevin-wu24 kevin-wu24 closed this Sep 26, 2025
@kevin-wu24

Copy link
Copy Markdown
Contributor Author

here's the new PR link: @frankvicky #20604

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants