MINOR: Mark IBP_4_0_IV3 as production ready! (#18902)

This patch marks IBP_4_0_IV3 as production ready for the Apache Kafka 4.0 release. It also introduced IBP_4_1_IV0 as the next development version.

Reviewers: Justine Olshan <jolshan@confluent.io>
This commit is contained in:
David Jacot 2025-02-14 17:17:11 +01:00 committed by GitHub
parent 1cbd0a2bd7
commit aec0e555be
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 23 additions and 11 deletions

View File

@ -34,6 +34,7 @@ import org.apache.kafka.server.common.Feature;
import org.apache.kafka.server.common.GroupVersion;
import org.apache.kafka.server.common.MetadataVersion;
import org.apache.kafka.server.common.TestFeatureVersion;
import org.apache.kafka.server.common.TransactionVersion;
import org.apache.kafka.test.TestUtils;
import org.junit.jupiter.api.Test;
@ -353,6 +354,9 @@ public class FormatterTest {
setName(TestFeatureVersion.FEATURE_NAME).
setFeatureLevel(version), (short) 0));
}
expected.add(new ApiMessageAndVersion(new FeatureLevelRecord().
setName(TransactionVersion.FEATURE_NAME).
setFeatureLevel(TransactionVersion.TV_2.featureLevel()), (short) 0));
assertEquals(expected, bootstrapMetadata.records());
}
}

View File

@ -118,17 +118,20 @@ public enum MetadataVersion {
// ClearElrRecord is added.
IBP_4_0_IV1(23, "4.0", "IV1", true),
// Bootstrap metadata version for transaction versions 1 and 2 (KIP-890)
IBP_4_0_IV2(24, "4.0", "IV2", false),
// Enables async remote LIST_OFFSETS support (KIP-1075)
IBP_4_0_IV3(25, "4.0", "IV3", false),
//
// NOTE: MetadataVersions after this point are unstable and may be changed.
// If users attempt to use an unstable MetadataVersion, they will get an error.
// Please move this comment when updating the LATEST_PRODUCTION constant.
//
// Bootstrap metadata version for transaction versions 1 and 2 (KIP-890)
IBP_4_0_IV2(24, "4.0", "IV2", false),
// Enables async remote LIST_OFFSETS support (KIP-1075)
IBP_4_0_IV3(25, "4.0", "IV3", false);
// Not used by anything yet.
IBP_4_1_IV0(26, "4.1", "IV0", false);
// NOTES when adding a new version:
// Update the default version in @ClusterTest annotation to point to the latest version
@ -154,7 +157,7 @@ public enum MetadataVersion {
* <strong>Think carefully before you update this value. ONCE A METADATA VERSION IS PRODUCTION,
* IT CANNOT BE CHANGED.</strong>
*/
public static final MetadataVersion LATEST_PRODUCTION = IBP_4_0_IV1;
public static final MetadataVersion LATEST_PRODUCTION = IBP_4_0_IV3;
// If you change the value above please also update
// LATEST_STABLE_METADATA_VERSION version in tests/kafkatest/version.py

View File

@ -95,10 +95,13 @@ class MetadataVersionTest {
assertEquals(IBP_3_9_IV0, MetadataVersion.fromVersionString("3.9"));
assertEquals(IBP_3_9_IV0, MetadataVersion.fromVersionString("3.9-IV0"));
// 4.0-IV3 is the latest production version in the 4.0 line
assertEquals(IBP_4_0_IV0, MetadataVersion.fromVersionString("4.0-IV0"));
assertEquals(IBP_4_0_IV1, MetadataVersion.fromVersionString("4.0-IV1"));
assertEquals(IBP_4_0_IV2, MetadataVersion.fromVersionString("4.0-IV2"));
assertEquals(IBP_4_0_IV3, MetadataVersion.fromVersionString("4.0-IV3"));
assertEquals(IBP_4_1_IV0, MetadataVersion.fromVersionString("4.1-IV0"));
}
@Test
@ -128,6 +131,7 @@ class MetadataVersionTest {
assertEquals("4.0", IBP_4_0_IV1.shortVersion());
assertEquals("4.0", IBP_4_0_IV2.shortVersion());
assertEquals("4.0", IBP_4_0_IV3.shortVersion());
assertEquals("4.1", IBP_4_1_IV0.shortVersion());
}
@Test
@ -157,6 +161,7 @@ class MetadataVersionTest {
assertEquals("4.0-IV1", IBP_4_0_IV1.version());
assertEquals("4.0-IV2", IBP_4_0_IV2.version());
assertEquals("4.0-IV3", IBP_4_0_IV3.version());
assertEquals("4.1-IV0", IBP_4_1_IV0.version());
}
@Test

View File

@ -52,7 +52,7 @@ public @interface ClusterTest {
String brokerListener() default DEFAULT_BROKER_LISTENER_NAME;
SecurityProtocol controllerSecurityProtocol() default SecurityProtocol.PLAINTEXT;
String controllerListener() default DEFAULT_CONTROLLER_LISTENER_NAME;
MetadataVersion metadataVersion() default MetadataVersion.IBP_4_0_IV3;
MetadataVersion metadataVersion() default MetadataVersion.IBP_4_1_IV0;
ClusterConfigProperty[] serverProperties() default {};
// users can add tags that they want to display in test
String[] tags() default {};

View File

@ -114,7 +114,7 @@ DEV_VERSION = KafkaVersion("4.1.0-SNAPSHOT")
LATEST_STABLE_TRANSACTION_VERSION = 2
# This should match the LATEST_PRODUCTION version defined in MetadataVersion.java
LATEST_STABLE_METADATA_VERSION = "4.0-IV1"
LATEST_STABLE_METADATA_VERSION = "4.0-IV3"
# 0.11.0.x versions
V_0_11_0_3 = KafkaVersion("0.11.0.3")

View File

@ -64,7 +64,7 @@ public class FeatureCommandTest {
assertEquals("Feature: kraft.version\tSupportedMinVersion: 0\t" +
"SupportedMaxVersion: 1\tFinalizedVersionLevel: 0\t", outputWithoutEpoch(features.get(2)));
assertEquals("Feature: metadata.version\tSupportedMinVersion: 3.0-IV1\t" +
"SupportedMaxVersion: 4.0-IV3\tFinalizedVersionLevel: 3.3-IV1\t", outputWithoutEpoch(features.get(3)));
"SupportedMaxVersion: 4.1-IV0\tFinalizedVersionLevel: 3.3-IV1\t", outputWithoutEpoch(features.get(3)));
assertEquals("Feature: transaction.version\tSupportedMinVersion: 0\t" +
"SupportedMaxVersion: 2\tFinalizedVersionLevel: 0\t", outputWithoutEpoch(features.get(4)));
}
@ -86,7 +86,7 @@ public class FeatureCommandTest {
assertEquals("Feature: kraft.version\tSupportedMinVersion: 0\t" +
"SupportedMaxVersion: 1\tFinalizedVersionLevel: 0\t", outputWithoutEpoch(features.get(2)));
assertEquals("Feature: metadata.version\tSupportedMinVersion: 3.0-IV1\t" +
"SupportedMaxVersion: 4.0-IV3\tFinalizedVersionLevel: 3.7-IV0\t", outputWithoutEpoch(features.get(3)));
"SupportedMaxVersion: 4.1-IV0\tFinalizedVersionLevel: 3.7-IV0\t", outputWithoutEpoch(features.get(3)));
assertEquals("Feature: transaction.version\tSupportedMinVersion: 0\t" +
"SupportedMaxVersion: 2\tFinalizedVersionLevel: 0\t", outputWithoutEpoch(features.get(4)));
}
@ -114,7 +114,7 @@ public class FeatureCommandTest {
);
// Change expected message to reflect possible MetadataVersion range 1-N (N increases when adding a new version)
assertEquals("Could not disable metadata.version. The update failed for all features since the following " +
"feature had an error: Invalid update version 0 for feature metadata.version. Local controller 3000 only supports versions 1-25", commandOutput);
"feature had an error: Invalid update version 0 for feature metadata.version. Local controller 3000 only supports versions 1-26", commandOutput);
commandOutput = ToolsTestUtils.captureStandardOut(() ->
assertEquals(1, FeatureCommand.mainNoExit("--bootstrap-server", cluster.bootstrapServers(),