Skip to content

Conversation

kevin-wu24
Copy link
Contributor

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

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 [email protected], Kuan-Po Tseng
[email protected], Chia-Ping Tsai [email protected], José
Armando García Sancio [email protected]
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 <[email protected]>, Kuan-Po Tseng
 <[email protected]>, Chia-Ping Tsai <[email protected]>, José
 Armando García Sancio <[email protected]>
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
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
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