KAFKA-18474: Remove zkBroker listener (#18477)

Reviewers: Ismael Juma <ismael@juma.me.uk>, Chia-Ping Tsai <chia7712@gmail.com>, PoAn Yang <payang@apache.org>
This commit is contained in:
Ken Huang 2025-01-24 21:53:32 +08:00 committed by GitHub
parent 80d2a8a42d
commit 0c9df75295
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
73 changed files with 99 additions and 105 deletions

View File

@ -332,11 +332,7 @@ public enum ApiKeys {
return hasBuffer.get(); return hasBuffer.get();
} }
public static EnumSet<ApiKeys> zkBrokerApis() { public static EnumSet<ApiKeys> brokerApis() {
return apisForListener(ApiMessageType.ListenerType.ZK_BROKER);
}
public static EnumSet<ApiKeys> kraftBrokerApis() {
return apisForListener(ApiMessageType.ListenerType.BROKER); return apisForListener(ApiMessageType.ListenerType.BROKER);
} }
@ -346,7 +342,7 @@ public enum ApiKeys {
public static EnumSet<ApiKeys> clientApis() { public static EnumSet<ApiKeys> clientApis() {
List<ApiKeys> apis = Arrays.stream(ApiKeys.values()) List<ApiKeys> apis = Arrays.stream(ApiKeys.values())
.filter(apiKey -> apiKey.inScope(ApiMessageType.ListenerType.ZK_BROKER) || apiKey.inScope(ApiMessageType.ListenerType.BROKER)) .filter(apiKey -> apiKey.inScope(ApiMessageType.ListenerType.BROKER))
.collect(Collectors.toList()); .collect(Collectors.toList());
return EnumSet.copyOf(apis); return EnumSet.copyOf(apis);
} }

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 25, "apiKey": 25,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "AddOffsetsToTxnRequest", "name": "AddOffsetsToTxnRequest",
// Version 1 is the same as version 0. // Version 1 is the same as version 0.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 24, "apiKey": 24,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "AddPartitionsToTxnRequest", "name": "AddPartitionsToTxnRequest",
// Version 1 is the same as version 0. // Version 1 is the same as version 0.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 67, "apiKey": 67,
"type": "request", "type": "request",
"listeners": ["zkBroker", "controller"], "listeners": ["controller"],
"name": "AllocateProducerIdsRequest", "name": "AllocateProducerIdsRequest",
"validVersions": "0", "validVersions": "0",
"flexibleVersions": "0+", "flexibleVersions": "0+",

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 49, "apiKey": 49,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "AlterClientQuotasRequest", "name": "AlterClientQuotasRequest",
"validVersions": "0-1", "validVersions": "0-1",
// Version 1 enables flexible versions. // Version 1 enables flexible versions.

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 33, "apiKey": 33,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "AlterConfigsRequest", "name": "AlterConfigsRequest",
// Version 1 is the same as version 0. // Version 1 is the same as version 0.
// Version 2 enables flexible versions. // Version 2 enables flexible versions.

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 45, "apiKey": 45,
"type": "request", "type": "request",
"listeners": ["broker", "controller", "zkBroker"], "listeners": ["broker", "controller"],
"name": "AlterPartitionReassignmentsRequest", "name": "AlterPartitionReassignmentsRequest",
"validVersions": "0", "validVersions": "0",
"flexibleVersions": "0+", "flexibleVersions": "0+",

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 56, "apiKey": 56,
"type": "request", "type": "request",
"listeners": ["zkBroker", "controller"], "listeners": ["controller"],
"name": "AlterPartitionRequest", "name": "AlterPartitionRequest",
// Version 1 adds LeaderRecoveryState field (KIP-704). // Version 1 adds LeaderRecoveryState field (KIP-704).
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 34, "apiKey": 34,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "AlterReplicaLogDirsRequest", "name": "AlterReplicaLogDirsRequest",
// Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline. // Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 51, "apiKey": 51,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "AlterUserScramCredentialsRequest", "name": "AlterUserScramCredentialsRequest",
"validVersions": "0", "validVersions": "0",
"flexibleVersions": "0+", "flexibleVersions": "0+",

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 18, "apiKey": 18,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "ApiVersionsRequest", "name": "ApiVersionsRequest",
// Versions 0 through 2 of ApiVersionsRequest are the same. // Versions 0 through 2 of ApiVersionsRequest are the same.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 30, "apiKey": 30,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "CreateAclsRequest", "name": "CreateAclsRequest",
// Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline. // Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline.
// Version 1 adds resource pattern type. // Version 1 adds resource pattern type.

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 38, "apiKey": 38,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "CreateDelegationTokenRequest", "name": "CreateDelegationTokenRequest",
// Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline. // Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 37, "apiKey": 37,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "CreatePartitionsRequest", "name": "CreatePartitionsRequest",
// Version 1 is the same as version 0. // Version 1 is the same as version 0.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 19, "apiKey": 19,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "CreateTopicsRequest", "name": "CreateTopicsRequest",
// Versions 0-1 were removed in Apache Kafka 4.0, Version 2 is the new baseline. // Versions 0-1 were removed in Apache Kafka 4.0, Version 2 is the new baseline.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 31, "apiKey": 31,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "DeleteAclsRequest", "name": "DeleteAclsRequest",
// Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline. // Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline.
// Version 1 adds the pattern type. // Version 1 adds the pattern type.

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 42, "apiKey": 42,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "DeleteGroupsRequest", "name": "DeleteGroupsRequest",
// Version 1 is the same as version 0. // Version 1 is the same as version 0.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 21, "apiKey": 21,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "DeleteRecordsRequest", "name": "DeleteRecordsRequest",
// Version 1 is the same as version 0. // Version 1 is the same as version 0.

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 20, "apiKey": 20,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "DeleteTopicsRequest", "name": "DeleteTopicsRequest",
// Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline. // Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline.
// Versions 0, 1, 2, and 3 are the same. // Versions 0, 1, 2, and 3 are the same.

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 29, "apiKey": 29,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "DescribeAclsRequest", "name": "DescribeAclsRequest",
// Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline. // Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline.
// Version 1 adds resource pattern type. // Version 1 adds resource pattern type.

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 48, "apiKey": 48,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "DescribeClientQuotasRequest", "name": "DescribeClientQuotasRequest",
// Version 1 enables flexible versions. // Version 1 enables flexible versions.
"validVersions": "0-1", "validVersions": "0-1",

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 60, "apiKey": 60,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "DescribeClusterRequest", "name": "DescribeClusterRequest",
// //
// Version 1 adds EndpointType for KIP-919 support. // Version 1 adds EndpointType for KIP-919 support.

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 32, "apiKey": 32,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "DescribeConfigsRequest", "name": "DescribeConfigsRequest",
// Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline. // Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline.
// Version 1 adds IncludeSynonyms and removes IsDefault. // Version 1 adds IncludeSynonyms and removes IsDefault.

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 41, "apiKey": 41,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "DescribeDelegationTokenRequest", "name": "DescribeDelegationTokenRequest",
// Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline. // Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline.
// Version 1 is the same as version 0. // Version 1 is the same as version 0.

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 15, "apiKey": 15,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "DescribeGroupsRequest", "name": "DescribeGroupsRequest",
// Versions 1 and 2 are the same as version 0. // Versions 1 and 2 are the same as version 0.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 35, "apiKey": 35,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "DescribeLogDirsRequest", "name": "DescribeLogDirsRequest",
// Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline. // Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline.
// Version 1 is the same as version 0. // Version 1 is the same as version 0.

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 61, "apiKey": 61,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "DescribeProducersRequest", "name": "DescribeProducersRequest",
"validVersions": "0", "validVersions": "0",
"flexibleVersions": "0+", "flexibleVersions": "0+",

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 65, "apiKey": 65,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "DescribeTransactionsRequest", "name": "DescribeTransactionsRequest",
"validVersions": "0", "validVersions": "0",
"flexibleVersions": "0+", "flexibleVersions": "0+",

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 50, "apiKey": 50,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "DescribeUserScramCredentialsRequest", "name": "DescribeUserScramCredentialsRequest",
"validVersions": "0", "validVersions": "0",
"flexibleVersions": "0+", "flexibleVersions": "0+",

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 43, "apiKey": 43,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "ElectLeadersRequest", "name": "ElectLeadersRequest",
// Version 1 implements multiple leader election types, as described by KIP-460. // Version 1 implements multiple leader election types, as described by KIP-460.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 26, "apiKey": 26,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "EndTxnRequest", "name": "EndTxnRequest",
// Version 1 is the same as version 0. // Version 1 is the same as version 0.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 58, "apiKey": 58,
"type": "request", "type": "request",
"listeners": ["controller", "zkBroker"], "listeners": ["controller"],
"name": "EnvelopeRequest", "name": "EnvelopeRequest",
// Request struct for forwarding. // Request struct for forwarding.
"validVersions": "0", "validVersions": "0",

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 40, "apiKey": 40,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "ExpireDelegationTokenRequest", "name": "ExpireDelegationTokenRequest",
// Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline. // Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline.
// Version 1 is the same as version 0. // Version 1 is the same as version 0.

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 1, "apiKey": 1,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "FetchRequest", "name": "FetchRequest",
// Versions 0-3 were removed in Apache Kafka 4.0, Version 4 is the new baseline. // Versions 0-3 were removed in Apache Kafka 4.0, Version 4 is the new baseline.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 10, "apiKey": 10,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "FindCoordinatorRequest", "name": "FindCoordinatorRequest",
// Version 1 adds KeyType. // Version 1 adds KeyType.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 12, "apiKey": 12,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "HeartbeatRequest", "name": "HeartbeatRequest",
// Version 1 and version 2 are the same as version 0. // Version 1 and version 2 are the same as version 0.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 44, "apiKey": 44,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "IncrementalAlterConfigsRequest", "name": "IncrementalAlterConfigsRequest",
// Version 1 is the first flexible version. // Version 1 is the first flexible version.
"validVersions": "0-1", "validVersions": "0-1",

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 22, "apiKey": 22,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "InitProducerIdRequest", "name": "InitProducerIdRequest",
// Version 1 is the same as version 0. // Version 1 is the same as version 0.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 11, "apiKey": 11,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "JoinGroupRequest", "name": "JoinGroupRequest",
// Versions 0-1 were removed in Apache Kafka 4.0, Version 2 is the new baseline. // Versions 0-1 were removed in Apache Kafka 4.0, Version 2 is the new baseline.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 13, "apiKey": 13,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "LeaveGroupRequest", "name": "LeaveGroupRequest",
// Version 1 and 2 are the same as version 0. // Version 1 and 2 are the same as version 0.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 16, "apiKey": 16,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "ListGroupsRequest", "name": "ListGroupsRequest",
// Version 1 and 2 are the same as version 0. // Version 1 and 2 are the same as version 0.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 2, "apiKey": 2,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "ListOffsetsRequest", "name": "ListOffsetsRequest",
// Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline. // Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 46, "apiKey": 46,
"type": "request", "type": "request",
"listeners": ["broker", "controller", "zkBroker"], "listeners": ["broker", "controller"],
"name": "ListPartitionReassignmentsRequest", "name": "ListPartitionReassignmentsRequest",
"validVersions": "0", "validVersions": "0",
"flexibleVersions": "0+", "flexibleVersions": "0+",

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 66, "apiKey": 66,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "ListTransactionsRequest", "name": "ListTransactionsRequest",
// Version 1: adds DurationFilter to list transactions older than specified duration // Version 1: adds DurationFilter to list transactions older than specified duration
"validVersions": "0-1", "validVersions": "0-1",

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 3, "apiKey": 3,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "MetadataRequest", "name": "MetadataRequest",
"validVersions": "4-13", "validVersions": "4-13",
"flexibleVersions": "9+", "flexibleVersions": "9+",

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 8, "apiKey": 8,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "OffsetCommitRequest", "name": "OffsetCommitRequest",
// Versions 0-1 were removed in Apache Kafka 4.0, Version 2 is the new baseline. // Versions 0-1 were removed in Apache Kafka 4.0, Version 2 is the new baseline.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 47, "apiKey": 47,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "OffsetDeleteRequest", "name": "OffsetDeleteRequest",
"validVersions": "0", "validVersions": "0",
"flexibleVersions": "none", "flexibleVersions": "none",

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 9, "apiKey": 9,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "OffsetFetchRequest", "name": "OffsetFetchRequest",
// Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline. // Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 23, "apiKey": 23,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "OffsetForLeaderEpochRequest", "name": "OffsetForLeaderEpochRequest",
// Versions 0-1 were removed in Apache Kafka 4.0, Version 2 is the new baseline. // Versions 0-1 were removed in Apache Kafka 4.0, Version 2 is the new baseline.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 0, "apiKey": 0,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "ProduceRequest", "name": "ProduceRequest",
// Versions 0-2 were removed in Apache Kafka 4.0, Version 3 is the new baseline. // Versions 0-2 were removed in Apache Kafka 4.0, Version 3 is the new baseline.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 39, "apiKey": 39,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "RenewDelegationTokenRequest", "name": "RenewDelegationTokenRequest",
// Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline. // Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline.
// Version 1 is the same as version 0. // Version 1 is the same as version 0.

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 36, "apiKey": 36,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "SaslAuthenticateRequest", "name": "SaslAuthenticateRequest",
// Version 1 is the same as version 0. // Version 1 is the same as version 0.
// Version 2 adds flexible version support // Version 2 adds flexible version support

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 17, "apiKey": 17,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "SaslHandshakeRequest", "name": "SaslHandshakeRequest",
// Version 1 supports SASL_AUTHENTICATE. // Version 1 supports SASL_AUTHENTICATE.
// NOTE: Version cannot be easily bumped due to incorrect // NOTE: Version cannot be easily bumped due to incorrect

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 14, "apiKey": 14,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "SyncGroupRequest", "name": "SyncGroupRequest",
// Versions 1 and 2 are the same as version 0. // Versions 1 and 2 are the same as version 0.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 28, "apiKey": 28,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "TxnOffsetCommitRequest", "name": "TxnOffsetCommitRequest",
// Version 1 is the same as version 0. // Version 1 is the same as version 0.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 57, "apiKey": 57,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker", "controller"], "listeners": ["broker", "controller"],
"name": "UpdateFeaturesRequest", "name": "UpdateFeaturesRequest",
// Version 1 adds validate only field. // Version 1 adds validate only field.
// //

View File

@ -16,7 +16,7 @@
{ {
"apiKey": 27, "apiKey": 27,
"type": "request", "type": "request",
"listeners": ["zkBroker", "broker"], "listeners": ["broker"],
"name": "WriteTxnMarkersRequest", "name": "WriteTxnMarkersRequest",
// Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline. // Version 0 was removed in Apache Kafka 4.0, Version 1 is the new baseline.
// //

View File

@ -385,7 +385,7 @@ public class NetworkClientTest {
private void awaitReady(NetworkClient client, Node node) { private void awaitReady(NetworkClient client, Node node) {
if (client.discoverBrokerVersions()) { if (client.discoverBrokerVersions()) {
setExpectedApiVersionsResponse(TestUtils.defaultApiVersionsResponse( setExpectedApiVersionsResponse(TestUtils.defaultApiVersionsResponse(
ApiMessageType.ListenerType.ZK_BROKER)); ApiMessageType.ListenerType.BROKER));
} }
while (!client.ready(node, time.milliseconds())) while (!client.ready(node, time.milliseconds()))
client.poll(1, time.milliseconds()); client.poll(1, time.milliseconds());
@ -1455,7 +1455,7 @@ public class NetworkClientTest {
} }
private ApiVersionsResponse defaultApiVersionsResponse() { private ApiVersionsResponse defaultApiVersionsResponse() {
return TestUtils.defaultApiVersionsResponse(ApiMessageType.ListenerType.ZK_BROKER); return TestUtils.defaultApiVersionsResponse(ApiMessageType.ListenerType.BROKER);
} }
private static class TestCallbackHandler implements RequestCompletionHandler { private static class TestCallbackHandler implements RequestCompletionHandler {

View File

@ -776,7 +776,7 @@ public class KafkaAdminClientTest {
if (error == Errors.NONE) { if (error == Errors.NONE) {
return new ApiVersionsResponse.Builder(). return new ApiVersionsResponse.Builder().
setApiVersions(ApiVersionsResponse.filterApis( setApiVersions(ApiVersionsResponse.filterApis(
ApiMessageType.ListenerType.ZK_BROKER, false, false)). ApiMessageType.ListenerType.BROKER, false, false)).
setSupportedFeatures( setSupportedFeatures(
convertSupportedFeaturesMap(defaultFeatureMetadata().supportedFeatures())). convertSupportedFeaturesMap(defaultFeatureMetadata().supportedFeatures())).
setFinalizedFeatures( setFinalizedFeatures(

View File

@ -1902,7 +1902,7 @@ public class FetchRequestManagerTest {
MetadataRecoveryStrategy.NONE); MetadataRecoveryStrategy.NONE);
ApiVersionsResponse apiVersionsResponse = TestUtils.defaultApiVersionsResponse( ApiVersionsResponse apiVersionsResponse = TestUtils.defaultApiVersionsResponse(
400, ApiMessageType.ListenerType.ZK_BROKER); 400, ApiMessageType.ListenerType.BROKER);
ByteBuffer buffer = RequestTestUtils.serializeResponseWithHeader(apiVersionsResponse, ApiKeys.API_VERSIONS.latestVersion(), 0); ByteBuffer buffer = RequestTestUtils.serializeResponseWithHeader(apiVersionsResponse, ApiKeys.API_VERSIONS.latestVersion(), 0);
selector.delayedReceive(new DelayedReceive(node.idString(), new NetworkReceive(node.idString(), buffer))); selector.delayedReceive(new DelayedReceive(node.idString(), new NetworkReceive(node.idString(), buffer)));

View File

@ -1888,7 +1888,7 @@ public class FetcherTest {
MetadataRecoveryStrategy.NONE); MetadataRecoveryStrategy.NONE);
ApiVersionsResponse apiVersionsResponse = TestUtils.defaultApiVersionsResponse( ApiVersionsResponse apiVersionsResponse = TestUtils.defaultApiVersionsResponse(
400, ApiMessageType.ListenerType.ZK_BROKER); 400, ApiMessageType.ListenerType.BROKER);
ByteBuffer buffer = RequestTestUtils.serializeResponseWithHeader(apiVersionsResponse, ApiKeys.API_VERSIONS.latestVersion(), 0); ByteBuffer buffer = RequestTestUtils.serializeResponseWithHeader(apiVersionsResponse, ApiKeys.API_VERSIONS.latestVersion(), 0);
selector.delayedReceive(new DelayedReceive(node.idString(), new NetworkReceive(node.idString(), buffer))); selector.delayedReceive(new DelayedReceive(node.idString(), new NetworkReceive(node.idString(), buffer)));

View File

@ -221,7 +221,7 @@ public class SenderTest {
MetadataRecoveryStrategy.NONE); MetadataRecoveryStrategy.NONE);
ApiVersionsResponse apiVersionsResponse = TestUtils.defaultApiVersionsResponse( ApiVersionsResponse apiVersionsResponse = TestUtils.defaultApiVersionsResponse(
400, ApiMessageType.ListenerType.ZK_BROKER); 400, ApiMessageType.ListenerType.BROKER);
ByteBuffer buffer = RequestTestUtils.serializeResponseWithHeader(apiVersionsResponse, ApiKeys.API_VERSIONS.latestVersion(), 0); ByteBuffer buffer = RequestTestUtils.serializeResponseWithHeader(apiVersionsResponse, ApiKeys.API_VERSIONS.latestVersion(), 0);
selector.delayedReceive(new DelayedReceive(node.idString(), new NetworkReceive(node.idString(), buffer))); selector.delayedReceive(new DelayedReceive(node.idString(), new NetworkReceive(node.idString(), buffer)));

View File

@ -129,7 +129,7 @@ public final class NioEchoServer extends Thread {
if (channelBuilder == null) if (channelBuilder == null)
channelBuilder = ChannelBuilders.serverChannelBuilder(listenerName, false, channelBuilder = ChannelBuilders.serverChannelBuilder(listenerName, false,
securityProtocol, config, credentialCache, tokenCache, time, logContext, securityProtocol, config, credentialCache, tokenCache, time, logContext,
version -> TestUtils.defaultApiVersionsResponse(ApiMessageType.ListenerType.ZK_BROKER)); version -> TestUtils.defaultApiVersionsResponse(ApiMessageType.ListenerType.BROKER));
this.metrics = new Metrics(); this.metrics = new Metrics();
this.selector = new Selector(10000, failedAuthenticationDelayMs, metrics, time, this.selector = new Selector(10000, failedAuthenticationDelayMs, metrics, time,
"MetricGroup", channelBuilder, logContext); "MetricGroup", channelBuilder, logContext);

View File

@ -179,7 +179,7 @@ public class SaslChannelBuilderTest {
} }
private Function<Short, ApiVersionsResponse> defaultApiVersionsSupplier() { private Function<Short, ApiVersionsResponse> defaultApiVersionsSupplier() {
return version -> TestUtils.defaultApiVersionsResponse(ApiMessageType.ListenerType.ZK_BROKER); return version -> TestUtils.defaultApiVersionsResponse(ApiMessageType.ListenerType.BROKER);
} }
private SaslChannelBuilder createChannelBuilder(SecurityProtocol securityProtocol, String saslMechanism) { private SaslChannelBuilder createChannelBuilder(SecurityProtocol securityProtocol, String saslMechanism) {

View File

@ -1356,7 +1356,7 @@ public class SslTransportLayerTest {
} }
private Function<Short, ApiVersionsResponse> defaultApiVersionsSupplier() { private Function<Short, ApiVersionsResponse> defaultApiVersionsSupplier() {
return version -> TestUtils.defaultApiVersionsResponse(ApiMessageType.ListenerType.ZK_BROKER); return version -> TestUtils.defaultApiVersionsResponse(ApiMessageType.ListenerType.BROKER);
} }
static class TestSslChannelBuilder extends SslChannelBuilder { static class TestSslChannelBuilder extends SslChannelBuilder {

View File

@ -33,9 +33,11 @@ import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.EnumSource; import org.junit.jupiter.params.provider.EnumSource;
import org.junit.jupiter.params.provider.ValueSource; import org.junit.jupiter.params.provider.ValueSource;
import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashSet; import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertFalse;
@ -99,7 +101,7 @@ public class ApiVersionsResponseTest {
); );
ApiVersionCollection commonResponse = ApiVersionsResponse.intersectForwardableApis( ApiVersionCollection commonResponse = ApiVersionsResponse.intersectForwardableApis(
ApiMessageType.ListenerType.ZK_BROKER, ApiMessageType.ListenerType.BROKER,
activeControllerApiVersions, activeControllerApiVersions,
true, true,
false false
@ -111,20 +113,19 @@ public class ApiVersionsResponseTest {
ApiKeys.JOIN_GROUP.latestVersion(), commonResponse); ApiKeys.JOIN_GROUP.latestVersion(), commonResponse);
} }
@ParameterizedTest @Test
@EnumSource(names = {"ZK_BROKER", "BROKER"}) public void shouldReturnAllKeysWhenThrottleMsIsDefaultThrottle() {
public void shouldReturnAllKeysWhenThrottleMsIsDefaultThrottle(ListenerType listenerType) {
ApiVersionsResponse response = new ApiVersionsResponse.Builder(). ApiVersionsResponse response = new ApiVersionsResponse.Builder().
setThrottleTimeMs(AbstractResponse.DEFAULT_THROTTLE_TIME). setThrottleTimeMs(AbstractResponse.DEFAULT_THROTTLE_TIME).
setApiVersions(ApiVersionsResponse.filterApis( setApiVersions(ApiVersionsResponse.filterApis(
listenerType, ListenerType.BROKER,
true, true,
true)). true)).
setSupportedFeatures(Features.emptySupportedFeatures()). setSupportedFeatures(Features.emptySupportedFeatures()).
setFinalizedFeatures(Collections.emptyMap()). setFinalizedFeatures(Collections.emptyMap()).
setFinalizedFeaturesEpoch(ApiVersionsResponse.UNKNOWN_FINALIZED_FEATURES_EPOCH). setFinalizedFeaturesEpoch(ApiVersionsResponse.UNKNOWN_FINALIZED_FEATURES_EPOCH).
build(); build();
assertEquals(new HashSet<>(ApiKeys.apisForListener(listenerType)), apiKeysInResponse(response)); assertEquals(new HashSet<>(ApiKeys.apisForListener(ListenerType.BROKER)), apiKeysInResponse(response));
assertEquals(AbstractResponse.DEFAULT_THROTTLE_TIME, response.throttleTimeMs()); assertEquals(AbstractResponse.DEFAULT_THROTTLE_TIME, response.throttleTimeMs());
assertTrue(response.data().supportedFeatures().isEmpty()); assertTrue(response.data().supportedFeatures().isEmpty());
assertTrue(response.data().finalizedFeatures().isEmpty()); assertTrue(response.data().finalizedFeatures().isEmpty());
@ -160,25 +161,30 @@ public class ApiVersionsResponseTest {
build(); build();
verifyApiKeysForTelemetry(response, 0); verifyApiKeysForTelemetry(response, 0);
} }
@Test @Test
public void testMetadataQuorumApisAreDisabled() { public void testBrokerApisAreEnabled() {
ApiVersionsResponse response = new ApiVersionsResponse.Builder(). ApiVersionsResponse response = new ApiVersionsResponse.Builder().
setThrottleTimeMs(AbstractResponse.DEFAULT_THROTTLE_TIME). setThrottleTimeMs(AbstractResponse.DEFAULT_THROTTLE_TIME).
setApiVersions(ApiVersionsResponse.filterApis( setApiVersions(ApiVersionsResponse.filterApis(
ListenerType.ZK_BROKER, ListenerType.BROKER,
true, true,
true)). true)).
setSupportedFeatures(Features.emptySupportedFeatures()). setSupportedFeatures(Features.emptySupportedFeatures()).
setFinalizedFeatures(Collections.emptyMap()). setFinalizedFeatures(Collections.emptyMap()).
setFinalizedFeaturesEpoch(ApiVersionsResponse.UNKNOWN_FINALIZED_FEATURES_EPOCH). setFinalizedFeaturesEpoch(ApiVersionsResponse.UNKNOWN_FINALIZED_FEATURES_EPOCH).
build(); build();
// Ensure that APIs needed for the KRaft mode are not exposed through ApiVersions until we are ready for them
HashSet<ApiKeys> exposedApis = apiKeysInResponse(response); Set<ApiKeys> exposed = apiKeysInResponse(response);
assertFalse(exposedApis.contains(ApiKeys.VOTE));
assertFalse(exposedApis.contains(ApiKeys.BEGIN_QUORUM_EPOCH));
assertFalse(exposedApis.contains(ApiKeys.END_QUORUM_EPOCH)); Arrays.stream(ApiKeys.values())
assertFalse(exposedApis.contains(ApiKeys.DESCRIBE_QUORUM)); .filter(key -> key.messageType.listeners().contains(ListenerType.BROKER))
.forEach(key -> assertTrue(exposed.contains(key)));
Arrays.stream(ApiKeys.values())
.filter(key -> key.messageType.listeners()
.stream().noneMatch(listener -> listener == ListenerType.BROKER))
.forEach(key -> assertFalse(exposed.contains(key)));
} }
@Test @Test
@ -251,12 +257,6 @@ public class ApiVersionsResponseTest {
assertEquals(expectedVersionsForForwardableAPI, commonResponse.find(forwardableAPIKey)); assertEquals(expectedVersionsForForwardableAPI, commonResponse.find(forwardableAPIKey));
} }
private void verifyApiKeysForMagic(ApiVersionsResponse response, Byte maxMagic) {
for (ApiVersion version : response.data().apiKeys()) {
assertTrue(ApiKeys.forId(version.apiKey()).minRequiredInterBrokerMagic <= maxMagic);
}
}
private void verifyApiKeysForTelemetry(ApiVersionsResponse response, int expectedCount) { private void verifyApiKeysForTelemetry(ApiVersionsResponse response, int expectedCount) {
int count = 0; int count = 0;
for (ApiVersion version : response.data().apiKeys()) { for (ApiVersion version : response.data().apiKeys()) {

View File

@ -407,7 +407,7 @@ public class RequestResponseTest {
public void testApiVersionsSerialization() { public void testApiVersionsSerialization() {
for (short version : API_VERSIONS.allVersions()) { for (short version : API_VERSIONS.allVersions()) {
checkErrorResponse(createApiVersionRequest(version), new UnsupportedVersionException("Not Supported")); checkErrorResponse(createApiVersionRequest(version), new UnsupportedVersionException("Not Supported"));
checkResponse(TestUtils.defaultApiVersionsResponse(ApiMessageType.ListenerType.ZK_BROKER), version); checkResponse(TestUtils.defaultApiVersionsResponse(ApiMessageType.ListenerType.BROKER), version);
} }
} }
@ -840,7 +840,7 @@ public class RequestResponseTest {
} }
private ApiVersionsResponse defaultApiVersionsResponse() { private ApiVersionsResponse defaultApiVersionsResponse() {
return TestUtils.defaultApiVersionsResponse(ApiMessageType.ListenerType.ZK_BROKER); return TestUtils.defaultApiVersionsResponse(ApiMessageType.ListenerType.BROKER);
} }
@Test @Test

View File

@ -1107,7 +1107,7 @@ public class SaslAuthenticatorTest {
/** /**
* Test that callback handlers are only applied to connections for the mechanisms * Test that callback handlers are only applied to connections for the mechanisms
* configured for the handler. Test enables two mechanisms 'PLAIN` and `DIGEST-MD5` * configured for the handler. Test enables two mechanisms `PLAIN` and `DIGEST-MD5`
* on the servers with different callback handlers for the two mechanisms. Verifies * on the servers with different callback handlers for the two mechanisms. Verifies
* that clients using both mechanisms authenticate successfully. * that clients using both mechanisms authenticate successfully.
*/ */
@ -1980,7 +1980,7 @@ public class SaslAuthenticatorTest {
Function<Short, ApiVersionsResponse> apiVersionSupplier = version -> { Function<Short, ApiVersionsResponse> apiVersionSupplier = version -> {
ApiVersionsResponse defaultApiVersionResponse = TestUtils.defaultApiVersionsResponse( ApiVersionsResponse defaultApiVersionResponse = TestUtils.defaultApiVersionsResponse(
ApiMessageType.ListenerType.ZK_BROKER); ApiMessageType.ListenerType.BROKER);
ApiVersionCollection apiVersions = new ApiVersionCollection(); ApiVersionCollection apiVersions = new ApiVersionCollection();
for (ApiVersion apiVersion : defaultApiVersionResponse.data().apiKeys()) { for (ApiVersion apiVersion : defaultApiVersionResponse.data().apiKeys()) {
if (apiVersion.apiKey() != ApiKeys.SASL_AUTHENTICATE.id) { if (apiVersion.apiKey() != ApiKeys.SASL_AUTHENTICATE.id) {
@ -2574,7 +2574,7 @@ public class SaslAuthenticatorTest {
DelegationTokenCache tokenCache, Time time) { DelegationTokenCache tokenCache, Time time) {
super(connectionMode, jaasContexts, securityProtocol, listenerName, isInterBrokerListener, clientSaslMechanism, super(connectionMode, jaasContexts, securityProtocol, listenerName, isInterBrokerListener, clientSaslMechanism,
credentialCache, tokenCache, null, time, new LogContext(), credentialCache, tokenCache, null, time, new LogContext(),
version -> TestUtils.defaultApiVersionsResponse(ApiMessageType.ListenerType.ZK_BROKER)); version -> TestUtils.defaultApiVersionsResponse(ApiMessageType.ListenerType.BROKER));
} }
@Override @Override

View File

@ -401,7 +401,7 @@ public class SaslServerAuthenticatorTest {
Map<String, AuthenticateCallbackHandler> callbackHandlers = Collections.singletonMap( Map<String, AuthenticateCallbackHandler> callbackHandlers = Collections.singletonMap(
mechanism, new SaslServerCallbackHandler()); mechanism, new SaslServerCallbackHandler());
ApiVersionsResponse apiVersionsResponse = TestUtils.defaultApiVersionsResponse( ApiVersionsResponse apiVersionsResponse = TestUtils.defaultApiVersionsResponse(
ApiMessageType.ListenerType.ZK_BROKER); ApiMessageType.ListenerType.BROKER);
Map<String, Long> connectionsMaxReauthMsByMechanism = maxReauth != null ? Map<String, Long> connectionsMaxReauthMsByMechanism = maxReauth != null ?
Collections.singletonMap(mechanism, maxReauth) : Collections.emptyMap(); Collections.singletonMap(mechanism, maxReauth) : Collections.emptyMap();

View File

@ -270,7 +270,7 @@ class GssapiAuthenticationTest extends IntegrationTestHarness with SaslSetup {
val jaasContexts = Collections.singletonMap("GSSAPI", JaasContext.loadClientContext(config.values())) val jaasContexts = Collections.singletonMap("GSSAPI", JaasContext.loadClientContext(config.values()))
val channelBuilder = new SaslChannelBuilder(ConnectionMode.CLIENT, jaasContexts, securityProtocol, val channelBuilder = new SaslChannelBuilder(ConnectionMode.CLIENT, jaasContexts, securityProtocol,
null, false, kafkaClientSaslMechanism, null, null, null, time, new LogContext(), null, false, kafkaClientSaslMechanism, null, null, null, time, new LogContext(),
_ => org.apache.kafka.test.TestUtils.defaultApiVersionsResponse(ListenerType.ZK_BROKER)) { _ => org.apache.kafka.test.TestUtils.defaultApiVersionsResponse(ListenerType.BROKER)) {
override protected def defaultLoginClass(): Class[_ <: Login] = classOf[TestableKerberosLogin] override protected def defaultLoginClass(): Class[_ <: Login] = classOf[TestableKerberosLogin]
} }
channelBuilder.configure(config.values()) channelBuilder.configure(config.values())

View File

@ -86,7 +86,7 @@ class ApiVersionManagerTest {
))) )))
val versionManager = new DefaultApiVersionManager( val versionManager = new DefaultApiVersionManager(
listenerType = ListenerType.ZK_BROKER, listenerType = ListenerType.BROKER,
forwardingManager = forwardingManager, forwardingManager = forwardingManager,
brokerFeatures = brokerFeatures, brokerFeatures = brokerFeatures,
metadataCache = metadataCache, metadataCache = metadataCache,

View File

@ -183,7 +183,7 @@ class RequestQuotaTest extends BaseRequestTest {
def testUnauthorizedThrottle(quorum: String): Unit = { def testUnauthorizedThrottle(quorum: String): Unit = {
RequestQuotaTest.principal = RequestQuotaTest.UnauthorizedPrincipal RequestQuotaTest.principal = RequestQuotaTest.UnauthorizedPrincipal
val apiKeys = ApiKeys.kraftBrokerApis val apiKeys = ApiKeys.brokerApis
for (apiKey <- apiKeys.asScala.toSet -- RequestQuotaTest.Envelope) { for (apiKey <- apiKeys.asScala.toSet -- RequestQuotaTest.Envelope) {
submitTest(apiKey, () => checkUnauthorizedRequestThrottle(apiKey)) submitTest(apiKey, () => checkUnauthorizedRequestThrottle(apiKey))
} }
@ -192,11 +192,11 @@ class RequestQuotaTest extends BaseRequestTest {
} }
private def clientActions: Set[ApiKeys] = { private def clientActions: Set[ApiKeys] = {
ApiKeys.kraftBrokerApis.asScala.toSet -- clusterActions -- RequestQuotaTest.SaslActions -- RequestQuotaTest.Envelope ApiKeys.brokerApis.asScala.toSet -- clusterActions -- RequestQuotaTest.SaslActions -- RequestQuotaTest.Envelope
} }
private def clusterActions: Set[ApiKeys] = { private def clusterActions: Set[ApiKeys] = {
ApiKeys.kraftBrokerApis.asScala.filter(_.clusterAction).toSet ApiKeys.brokerApis.asScala.filter(_.clusterAction).toSet
} }
private def clusterActionsWithThrottleForBroker: Set[ApiKeys] = { private def clusterActionsWithThrottleForBroker: Set[ApiKeys] = {

View File

@ -19,8 +19,6 @@ package org.apache.kafka.message;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
public enum RequestListenerType { public enum RequestListenerType {
@JsonProperty("zkBroker")
ZK_BROKER,
@JsonProperty("broker") @JsonProperty("broker")
BROKER, BROKER,