MINOR: Move delegation token support to Metadata Version 3.6-IV2 (#14270)

#14083 added support for delegation tokens in KRaft and attached that support to the existing
MetadataVersion 3.6-IV1. This patch moves that support into a separate MetadataVersion 3.6-IV2.

Reviewers: Colin P. McCabe <cmccabe@apache.org>
This commit is contained in:
Ron Dagostino 2023-08-22 19:04:53 -04:00 committed by Colin P. McCabe
parent 732b7b25b0
commit 64087fd9f3
6 changed files with 22 additions and 12 deletions

View File

@ -117,6 +117,6 @@ public class ClusterTestExtensionsTest {
@ClusterTest
public void testDefaults(ClusterConfig config) {
Assertions.assertEquals(MetadataVersion.IBP_3_6_IV1, config.metadataVersion());
Assertions.assertEquals(MetadataVersion.IBP_3_6_IV2, config.metadataVersion());
}
}

View File

@ -41,6 +41,6 @@ public @interface ClusterTest {
String name() default "";
SecurityProtocol securityProtocol() default SecurityProtocol.PLAINTEXT;
String listener() default "";
MetadataVersion metadataVersion() default MetadataVersion.IBP_3_6_IV1;
MetadataVersion metadataVersion() default MetadataVersion.IBP_3_6_IV2;
ClusterConfigProperty[] serverProperties() default {};
}

View File

@ -166,7 +166,7 @@ public class QuorumControllerTest {
) {
controlEnv.activeController().registerBroker(ANONYMOUS_CONTEXT,
new BrokerRegistrationRequestData().
setFeatures(brokerFeatures(MetadataVersion.IBP_3_0_IV1, MetadataVersion.IBP_3_6_IV1)).
setFeatures(brokerFeatures(MetadataVersion.IBP_3_0_IV1, MetadataVersion.IBP_3_6_IV2)).
setBrokerId(0).
setClusterId(logEnv.clusterId())).get();
testConfigurationOperations(controlEnv.activeController());
@ -207,7 +207,7 @@ public class QuorumControllerTest {
) {
controlEnv.activeController().registerBroker(ANONYMOUS_CONTEXT,
new BrokerRegistrationRequestData().
setFeatures(brokerFeatures(MetadataVersion.IBP_3_0_IV1, MetadataVersion.IBP_3_6_IV1)).
setFeatures(brokerFeatures(MetadataVersion.IBP_3_0_IV1, MetadataVersion.IBP_3_6_IV2)).
setBrokerId(0).
setClusterId(logEnv.clusterId())).get();
testDelayedConfigurationOperations(logEnv, controlEnv.activeController());
@ -544,7 +544,7 @@ public class QuorumControllerTest {
setBrokerId(0).
setClusterId(active.clusterId()).
setIncarnationId(Uuid.fromString("kxAT73dKQsitIedpiPtwBA")).
setFeatures(brokerFeatures(MetadataVersion.IBP_3_0_IV1, MetadataVersion.IBP_3_6_IV1)).
setFeatures(brokerFeatures(MetadataVersion.IBP_3_0_IV1, MetadataVersion.IBP_3_6_IV2)).
setListeners(listeners));
assertEquals(5L, reply.get().epoch());
CreateTopicsRequestData createTopicsRequestData =

View File

@ -179,10 +179,15 @@ public enum MetadataVersion {
// Remove leader epoch bump when KRaft controller shrinks the ISR (KAFKA-15021)
IBP_3_6_IV0(12, "3.6", "IV0", false),
// Add metadata transactions and KRaft support for Delegation Tokens
IBP_3_6_IV1(13, "3.6", "IV1", true);
// Add metadata transactions
IBP_3_6_IV1(13, "3.6", "IV1", true),
// NOTE: update the default version in @ClusterTest annotation to point to the latest version
// Add KRaft support for Delegation Tokens
IBP_3_6_IV2(14, "3.6", "IV2", true);
// NOTES when adding a new version:
// Update the default version in @ClusterTest annotation to point to the latest version
// Change expected message in org.apache.kafka.tools.FeatureCommandTest in multiple places (search for "Change expected message")
public static final String FEATURE_NAME = "metadata.version";
/**
@ -275,7 +280,7 @@ public enum MetadataVersion {
}
public boolean isDelegationTokenSupported() {
return this.isAtLeast(IBP_3_6_IV1);
return this.isAtLeast(IBP_3_6_IV2);
}
public boolean isKRaftSupported() {

View File

@ -163,6 +163,7 @@ class MetadataVersionTest {
assertEquals(IBP_3_6_IV0, MetadataVersion.fromVersionString("3.6-IV0"));
assertEquals(IBP_3_6_IV1, MetadataVersion.fromVersionString("3.6-IV1"));
assertEquals(IBP_3_6_IV2, MetadataVersion.fromVersionString("3.6-IV2"));
}
@Test
@ -216,6 +217,7 @@ class MetadataVersionTest {
assertEquals("3.5", IBP_3_5_IV2.shortVersion());
assertEquals("3.6", IBP_3_6_IV0.shortVersion());
assertEquals("3.6", IBP_3_6_IV1.shortVersion());
assertEquals("3.6", IBP_3_6_IV2.shortVersion());
}
@Test
@ -258,6 +260,7 @@ class MetadataVersionTest {
assertEquals("3.5-IV2", IBP_3_5_IV2.version());
assertEquals("3.6-IV0", IBP_3_6_IV0.version());
assertEquals("3.6-IV1", IBP_3_6_IV1.version());
assertEquals("3.6-IV2", IBP_3_6_IV2.version());
}
@Test
@ -312,7 +315,7 @@ class MetadataVersionTest {
@ParameterizedTest
@EnumSource(value = MetadataVersion.class)
public void testIsDelegationTokenSupported(MetadataVersion metadataVersion) {
assertEquals(metadataVersion.isAtLeast(IBP_3_6_IV1),
assertEquals(metadataVersion.isAtLeast(IBP_3_6_IV2),
metadataVersion.isDelegationTokenSupported());
}

View File

@ -66,8 +66,9 @@ public class FeatureCommandTest {
String commandOutput = ToolsTestUtils.captureStandardOut(() ->
assertEquals(0, FeatureCommand.mainNoExit("--bootstrap-server", cluster.bootstrapServers(), "describe"))
);
// Change expected message to reflect latest MetadataVersion (SupportedMaxVersion increases when adding a new version)
assertEquals("Feature: metadata.version\tSupportedMinVersion: 3.0-IV1\t" +
"SupportedMaxVersion: 3.6-IV1\tFinalizedVersionLevel: 3.3-IV1\t", outputWithoutEpoch(commandOutput));
"SupportedMaxVersion: 3.6-IV2\tFinalizedVersionLevel: 3.3-IV1\t", outputWithoutEpoch(commandOutput));
}
@ClusterTest(clusterType = Type.ZK, metadataVersion = MetadataVersion.IBP_3_3_IV1)
@ -124,8 +125,9 @@ public class FeatureCommandTest {
assertEquals(1, FeatureCommand.mainNoExit("--bootstrap-server", cluster.bootstrapServers(),
"disable", "--feature", "metadata.version"))
);
// Change expected message to reflect possible MetadataVersion range 1-N (N increases when adding a new version)
assertEquals("Could not disable metadata.version. Invalid update version 0 for feature " +
"metadata.version. Local controller 3000 only supports versions 1-13", commandOutput);
"metadata.version. Local controller 3000 only supports versions 1-14", commandOutput);
commandOutput = ToolsTestUtils.captureStandardOut(() ->
assertEquals(1, FeatureCommand.mainNoExit("--bootstrap-server", cluster.bootstrapServers(),