Hi, I think I found something which could be a blocker for the release. I was adding the support for Apache Kafka 4.1.0 to Strimzi and running our tests but some of them are failing with the following error.
java.lang.IllegalArgumentException: Version 4.1 is not a valid version. The minimum version is 3.3-IV3 and the maximum version is 4.2-IV1 at org.apache.kafka.server.common.MetadataVersion.lambda$fromVersionString$0(MetadataVersion.java:356) at java.base/java.util.Optional.orElseThrow(Optional.java:403) at org.apache.kafka.server.common.MetadataVersion.fromVersionString(MetadataVersion.java:354) In these tests we use the MetadataVersion class to verify the validity of metadata but it fails when passing something like "4.1" (while they work just fine with all previous releases, i.e. "4.0", "3.9" and so on). The exception, thrown by the fromVersionString method, seems to be related to "4.1" missing as key entry within the IBP_VERSIONS map and such entry seems to be missing because, if you go through the static initialization of the IBP_VERSIONS map, the "4.1" entry is not added due to the metadataVersion.isProduction() which results false for "4.1" because the LATEST_PRODUCTION constant is defined as IBP_4_0_IV3 while I would assume should be something like IBP_4_1_IV1 instead. I think this issue wasn't caught during Kafka upstream testing because the MetadataVersionTest.testFromVersionString is missing the test for "4.1" (as we have for all other versions). So it's missing something like assertEquals(IBP_4_1_IV1, MetadataVersion.fromVersionString("4.1")); assertEquals(IBP_4_1_IV0, MetadataVersion.fromVersionString("4.1-IV0")); assertEquals(IBP_4_1_IV1, MetadataVersion.fromVersionString("4.1-IV1")); Let's add that this issue seems to break the storage tool where you can pass the --release-version, but if you run it by passing "4.1" you get exactly the same exception. > bin/kafka-storage.sh format --standalone -t kEzc4vk3TIKhCQKsh40klQ -c config/server.properties --release-version 4.1 Exception in thread "main" java.lang.IllegalArgumentException: Version 4.1 is not a valid version. The minimum version is 3.3-IV3 and the maximum version is 4.2-IV1 Finally, I would add that the error message itself is misleading as it mentions 4.2-IV1 as maximum version which would not exist at all if you are dealing with a 4.1 release. This misleading message should be related to MetadataVersion.latestTesting() method which is getting last value from VERSIONS which is filled with all MetadataVersion enums including the 4.2 placeholders (which AFAIU is actually a new practice). All of that has also an impact on the ClusterTest annotation class as well as FeatureCommandTest messages to be assert. So that 4.2 seems to be there on purpose but not sure why. I would be happy to contribute about the first issue which raises the exception. Not sure about the misleading error message because of the usage of the 4.2 placeholders within the VERSIONS collection. Thanks Paolo Patierno ---------- Forwarded message --------- From: Mickael Maison <mickael.mai...@gmail.com> Date: Fri, Jul 11, 2025 at 11:53 PM Subject: [VOTE] 4.1.0 RC0 To: dev <d...@kafka.apache.org>, Users <users@kafka.apache.org>, kafka-clients <kafka-clie...@googlegroups.com> Hello Kafka users, developers and client-developers, This is the first candidate for release of Apache Kafka 4.1.0. The release brings many new features and improvements: - Mechanism for plugin to register metrics - Allow running multiple versions of connector plugins - Queue are now in preview access - New Streams rebalance protocol in early access - Support for OAuth jwt-bearer grant type - Improved metadata replication Release notes for the 4.1.0 release: https://dist.apache.org/repos/dist/dev/kafka/4.1.0-rc0/RELEASE_NOTES.html *** Please download, test and vote by Monday July 21 Kafka's KEYS file containing PGP keys we use to sign the release: https://kafka.apache.org/KEYS * Release artifacts to be voted upon (source and binary): https://dist.apache.org/repos/dist/dev/kafka/4.1.0-rc0/ * Docker release artifacts to be voted upon: apache/kafka:4.1.0-rc0 apache/kafka-native:4.1.0-rc0 * Maven artifacts to be voted upon: https://repository.apache.org/content/groups/staging/org/apache/kafka/ * Javadoc: https://dist.apache.org/repos/dist/dev/kafka/4.1.0-rc0/javadoc/ * Tag to be voted upon (off 4.1 branch) is the 4.1.0 tag: https://github.com/apache/kafka/releases/tag/4.1.0-rc0 * Documentation: https://kafka.apache.org/41/documentation.html PR (https://github.com/apache/kafka-site/pull/702) is not merged yet * Protocol: https://kafka.apache.org/41/protocol.html PR (https://github.com/apache/kafka-site/pull/702) is not merged yet * Successful CI builds for the 4.1 branch: Unit/integration tests: https://github.com/apache/kafka/actions/runs/16198079614 * System tests results: - core: https://drive.google.com/file/d/1JLpFBFbPV1N6cdh9EA9TGw9S5SZwkIpv/view?usp=drive_link - non-core: https://drive.google.com/file/d/15jCnTS-dssSHauW7uWxroiupkWaeUK7A/view?usp=drive_link I got 2 failures in the system tests: - 'tests/kafkatest/tests/client/consumer_test.py::OffsetValidationTest.test_broker_rolling_bounce@ {"metadata_quorum":"ISOLATED_KRAFT","group_protocol":"classic"}' - 'tests/kafkatest/tests/core/network_degrade_test.py::NetworkDegradeTest.test_rate@ {"task_name":"rate-1000-latency-50","device_name":"eth0","latency_ms":50,"rate_limit_kbit":1000000,"metadata_quorum":"COMBINED_KRAFT"}' * Successful Docker Image Github Actions Pipeline for 4.1 branch: Docker Build Test Pipeline (JVM): https://github.com/apache/kafka/actions/runs/16172687407/ Docker Build Test Pipeline (Native): https://github.com/apache/kafka/actions/runs/16220242161 Note: As described in the release thread, the native image configuration files had to be updated. I'm not able to run the full system test suite with the GraalVM agent to generate the new configuration files. Luke has kindly run a few commands to produce a fix to the config files. I validated that the kafka-native:4.1.0-rc0 image passes the quickstart (clients, connect and streams), but as that image is only for development, I've not tested it any further. Also all the other release artifacts were generated before the fix to the native image configuration files was merged. As these files are not part of any of the other release artifacts and as this is rc0, I deemed that acceptable. Thanks, Mickael > -- Paolo Patierno *Senior Principal Software Engineer @ Red Hat**CNCF Ambassador* *Microsoft MVP on **Azure* Twitter : @ppatierno <http://twitter.com/ppatierno> Linkedin : paolopatierno <http://it.linkedin.com/in/paolopatierno> GitHub : ppatierno <https://github.com/ppatierno> Paolo Patierno *Senior Principal Software Engineer @ Red Hat**CNCF Ambassador* *Microsoft MVP on **Azure* Twitter : @ppatierno <http://twitter.com/ppatierno> Linkedin : paolopatierno <http://it.linkedin.com/in/paolopatierno> GitHub : ppatierno <https://github.com/ppatierno>