ijuma commented on a change in pull request #9748: URL: https://github.com/apache/kafka/pull/9748#discussion_r543815467
########## File path: clients/src/main/java/org/apache/kafka/common/protocol/ApiKeys.java ########## @@ -157,124 +38,76 @@ * Identifiers for all the Kafka APIs */ public enum ApiKeys { - PRODUCE(0, "Produce", ProduceRequestData.SCHEMAS, ProduceResponseData.SCHEMAS), - FETCH(1, "Fetch", FetchRequestData.SCHEMAS, FetchResponseData.SCHEMAS), - LIST_OFFSETS(2, "ListOffsets", ListOffsetRequestData.SCHEMAS, ListOffsetResponseData.SCHEMAS), - METADATA(3, "Metadata", MetadataRequestData.SCHEMAS, MetadataResponseData.SCHEMAS), - LEADER_AND_ISR(4, "LeaderAndIsr", true, LeaderAndIsrRequestData.SCHEMAS, LeaderAndIsrResponseData.SCHEMAS), - STOP_REPLICA(5, "StopReplica", true, StopReplicaRequestData.SCHEMAS, StopReplicaResponseData.SCHEMAS), - UPDATE_METADATA(6, "UpdateMetadata", true, UpdateMetadataRequestData.SCHEMAS, UpdateMetadataResponseData.SCHEMAS), - CONTROLLED_SHUTDOWN(7, "ControlledShutdown", true, ControlledShutdownRequestData.SCHEMAS, - ControlledShutdownResponseData.SCHEMAS), - OFFSET_COMMIT(8, "OffsetCommit", OffsetCommitRequestData.SCHEMAS, OffsetCommitResponseData.SCHEMAS), - OFFSET_FETCH(9, "OffsetFetch", OffsetFetchRequestData.SCHEMAS, OffsetFetchResponseData.SCHEMAS), - FIND_COORDINATOR(10, "FindCoordinator", FindCoordinatorRequestData.SCHEMAS, - FindCoordinatorResponseData.SCHEMAS), - JOIN_GROUP(11, "JoinGroup", JoinGroupRequestData.SCHEMAS, JoinGroupResponseData.SCHEMAS), - HEARTBEAT(12, "Heartbeat", HeartbeatRequestData.SCHEMAS, HeartbeatResponseData.SCHEMAS), - LEAVE_GROUP(13, "LeaveGroup", LeaveGroupRequestData.SCHEMAS, LeaveGroupResponseData.SCHEMAS), - SYNC_GROUP(14, "SyncGroup", SyncGroupRequestData.SCHEMAS, SyncGroupResponseData.SCHEMAS), - DESCRIBE_GROUPS(15, "DescribeGroups", DescribeGroupsRequestData.SCHEMAS, - DescribeGroupsResponseData.SCHEMAS), - LIST_GROUPS(16, "ListGroups", ListGroupsRequestData.SCHEMAS, ListGroupsResponseData.SCHEMAS), - SASL_HANDSHAKE(17, "SaslHandshake", SaslHandshakeRequestData.SCHEMAS, SaslHandshakeResponseData.SCHEMAS), - API_VERSIONS(18, "ApiVersions", ApiVersionsRequestData.SCHEMAS, ApiVersionsResponseData.SCHEMAS) { - @Override - public Struct parseResponse(short version, ByteBuffer buffer) { - // Fallback to version 0 for ApiVersions response. If a client sends an ApiVersionsRequest - // using a version higher than that supported by the broker, a version 0 response is sent - // to the client indicating UNSUPPORTED_VERSION. - return parseResponse(version, buffer, (short) 0); - } - }, - CREATE_TOPICS(19, "CreateTopics", CreateTopicsRequestData.SCHEMAS, CreateTopicsResponseData.SCHEMAS, true), - DELETE_TOPICS(20, "DeleteTopics", DeleteTopicsRequestData.SCHEMAS, DeleteTopicsResponseData.SCHEMAS, true), - DELETE_RECORDS(21, "DeleteRecords", DeleteRecordsRequestData.SCHEMAS, DeleteRecordsResponseData.SCHEMAS), - INIT_PRODUCER_ID(22, "InitProducerId", InitProducerIdRequestData.SCHEMAS, InitProducerIdResponseData.SCHEMAS), - OFFSET_FOR_LEADER_EPOCH(23, "OffsetForLeaderEpoch", false, OffsetForLeaderEpochRequestData.SCHEMAS, - OffsetForLeaderEpochResponseData.SCHEMAS), - ADD_PARTITIONS_TO_TXN(24, "AddPartitionsToTxn", false, RecordBatch.MAGIC_VALUE_V2, - AddPartitionsToTxnRequestData.SCHEMAS, AddPartitionsToTxnResponseData.SCHEMAS), - ADD_OFFSETS_TO_TXN(25, "AddOffsetsToTxn", false, RecordBatch.MAGIC_VALUE_V2, AddOffsetsToTxnRequestData.SCHEMAS, - AddOffsetsToTxnResponseData.SCHEMAS), - END_TXN(26, "EndTxn", false, RecordBatch.MAGIC_VALUE_V2, EndTxnRequestData.SCHEMAS, EndTxnResponseData.SCHEMAS), - WRITE_TXN_MARKERS(27, "WriteTxnMarkers", true, RecordBatch.MAGIC_VALUE_V2, WriteTxnMarkersRequestData.SCHEMAS, - WriteTxnMarkersResponseData.SCHEMAS), - TXN_OFFSET_COMMIT(28, "TxnOffsetCommit", false, RecordBatch.MAGIC_VALUE_V2, TxnOffsetCommitRequestData.SCHEMAS, - TxnOffsetCommitResponseData.SCHEMAS), - DESCRIBE_ACLS(29, "DescribeAcls", DescribeAclsRequestData.SCHEMAS, DescribeAclsResponseData.SCHEMAS), - CREATE_ACLS(30, "CreateAcls", CreateAclsRequestData.SCHEMAS, CreateAclsResponseData.SCHEMAS, true), - DELETE_ACLS(31, "DeleteAcls", DeleteAclsRequestData.SCHEMAS, DeleteAclsResponseData.SCHEMAS, true), - DESCRIBE_CONFIGS(32, "DescribeConfigs", DescribeConfigsRequestData.SCHEMAS, - DescribeConfigsResponseData.SCHEMAS), - ALTER_CONFIGS(33, "AlterConfigs", AlterConfigsRequestData.SCHEMAS, - AlterConfigsResponseData.SCHEMAS, true), - ALTER_REPLICA_LOG_DIRS(34, "AlterReplicaLogDirs", AlterReplicaLogDirsRequestData.SCHEMAS, - AlterReplicaLogDirsResponseData.SCHEMAS), - DESCRIBE_LOG_DIRS(35, "DescribeLogDirs", DescribeLogDirsRequestData.SCHEMAS, - DescribeLogDirsResponseData.SCHEMAS), - SASL_AUTHENTICATE(36, "SaslAuthenticate", SaslAuthenticateRequestData.SCHEMAS, - SaslAuthenticateResponseData.SCHEMAS), - CREATE_PARTITIONS(37, "CreatePartitions", CreatePartitionsRequestData.SCHEMAS, - CreatePartitionsResponseData.SCHEMAS, true), - CREATE_DELEGATION_TOKEN(38, "CreateDelegationToken", CreateDelegationTokenRequestData.SCHEMAS, - CreateDelegationTokenResponseData.SCHEMAS, true), - RENEW_DELEGATION_TOKEN(39, "RenewDelegationToken", RenewDelegationTokenRequestData.SCHEMAS, - RenewDelegationTokenResponseData.SCHEMAS, true), - EXPIRE_DELEGATION_TOKEN(40, "ExpireDelegationToken", ExpireDelegationTokenRequestData.SCHEMAS, - ExpireDelegationTokenResponseData.SCHEMAS, true), - DESCRIBE_DELEGATION_TOKEN(41, "DescribeDelegationToken", DescribeDelegationTokenRequestData.SCHEMAS, - DescribeDelegationTokenResponseData.SCHEMAS), - DELETE_GROUPS(42, "DeleteGroups", DeleteGroupsRequestData.SCHEMAS, DeleteGroupsResponseData.SCHEMAS), - ELECT_LEADERS(43, "ElectLeaders", ElectLeadersRequestData.SCHEMAS, - ElectLeadersResponseData.SCHEMAS), - INCREMENTAL_ALTER_CONFIGS(44, "IncrementalAlterConfigs", IncrementalAlterConfigsRequestData.SCHEMAS, - IncrementalAlterConfigsResponseData.SCHEMAS, true), - ALTER_PARTITION_REASSIGNMENTS(45, "AlterPartitionReassignments", AlterPartitionReassignmentsRequestData.SCHEMAS, - AlterPartitionReassignmentsResponseData.SCHEMAS, true), - LIST_PARTITION_REASSIGNMENTS(46, "ListPartitionReassignments", ListPartitionReassignmentsRequestData.SCHEMAS, - ListPartitionReassignmentsResponseData.SCHEMAS), - OFFSET_DELETE(47, "OffsetDelete", OffsetDeleteRequestData.SCHEMAS, OffsetDeleteResponseData.SCHEMAS), - DESCRIBE_CLIENT_QUOTAS(48, "DescribeClientQuotas", DescribeClientQuotasRequestData.SCHEMAS, - DescribeClientQuotasResponseData.SCHEMAS), - ALTER_CLIENT_QUOTAS(49, "AlterClientQuotas", AlterClientQuotasRequestData.SCHEMAS, - AlterClientQuotasResponseData.SCHEMAS, true), - DESCRIBE_USER_SCRAM_CREDENTIALS(50, "DescribeUserScramCredentials", DescribeUserScramCredentialsRequestData.SCHEMAS, - DescribeUserScramCredentialsResponseData.SCHEMAS), - ALTER_USER_SCRAM_CREDENTIALS(51, "AlterUserScramCredentials", AlterUserScramCredentialsRequestData.SCHEMAS, - AlterUserScramCredentialsResponseData.SCHEMAS, true), - VOTE(52, "Vote", true, false, - VoteRequestData.SCHEMAS, VoteResponseData.SCHEMAS), - BEGIN_QUORUM_EPOCH(53, "BeginQuorumEpoch", true, false, - BeginQuorumEpochRequestData.SCHEMAS, BeginQuorumEpochResponseData.SCHEMAS), - END_QUORUM_EPOCH(54, "EndQuorumEpoch", true, false, - EndQuorumEpochRequestData.SCHEMAS, EndQuorumEpochResponseData.SCHEMAS), - DESCRIBE_QUORUM(55, "DescribeQuorum", true, false, - DescribeQuorumRequestData.SCHEMAS, DescribeQuorumResponseData.SCHEMAS), - ALTER_ISR(56, "AlterIsr", true, AlterIsrRequestData.SCHEMAS, AlterIsrResponseData.SCHEMAS), - UPDATE_FEATURES(57, "UpdateFeatures", - UpdateFeaturesRequestData.SCHEMAS, UpdateFeaturesResponseData.SCHEMAS, true), - ENVELOPE(58, "Envelope", true, false, EnvelopeRequestData.SCHEMAS, EnvelopeResponseData.SCHEMAS); - - private static final ApiKeys[] ID_TO_TYPE; - private static final int MIN_API_KEY = 0; - public static final int MAX_API_KEY; - + PRODUCE(ApiMessageType.PRODUCE), + FETCH(ApiMessageType.FETCH), + LIST_OFFSETS(ApiMessageType.LIST_OFFSETS), + METADATA(ApiMessageType.METADATA), + LEADER_AND_ISR(ApiMessageType.LEADER_AND_ISR, true), + STOP_REPLICA(ApiMessageType.STOP_REPLICA, true), + UPDATE_METADATA(ApiMessageType.UPDATE_METADATA, true), + CONTROLLED_SHUTDOWN(ApiMessageType.CONTROLLED_SHUTDOWN, true), + OFFSET_COMMIT(ApiMessageType.OFFSET_COMMIT), + OFFSET_FETCH(ApiMessageType.OFFSET_FETCH), + FIND_COORDINATOR(ApiMessageType.FIND_COORDINATOR), + JOIN_GROUP(ApiMessageType.JOIN_GROUP), + HEARTBEAT(ApiMessageType.HEARTBEAT), + LEAVE_GROUP(ApiMessageType.LEAVE_GROUP), + SYNC_GROUP(ApiMessageType.SYNC_GROUP), + DESCRIBE_GROUPS(ApiMessageType.DESCRIBE_GROUPS), + LIST_GROUPS(ApiMessageType.LIST_GROUPS), + SASL_HANDSHAKE(ApiMessageType.SASL_HANDSHAKE), + API_VERSIONS(ApiMessageType.API_VERSIONS), + CREATE_TOPICS(ApiMessageType.CREATE_TOPICS, false, true), + DELETE_TOPICS(ApiMessageType.DELETE_TOPICS, false, true), + DELETE_RECORDS(ApiMessageType.DELETE_RECORDS), + INIT_PRODUCER_ID(ApiMessageType.INIT_PRODUCER_ID), + OFFSET_FOR_LEADER_EPOCH(ApiMessageType.OFFSET_FOR_LEADER_EPOCH), + ADD_PARTITIONS_TO_TXN(ApiMessageType.ADD_PARTITIONS_TO_TXN, false, RecordBatch.MAGIC_VALUE_V2, false), + ADD_OFFSETS_TO_TXN(ApiMessageType.ADD_OFFSETS_TO_TXN, false, RecordBatch.MAGIC_VALUE_V2, false), + END_TXN(ApiMessageType.END_TXN, false, RecordBatch.MAGIC_VALUE_V2, false), + WRITE_TXN_MARKERS(ApiMessageType.WRITE_TXN_MARKERS, true, RecordBatch.MAGIC_VALUE_V2, false), + TXN_OFFSET_COMMIT(ApiMessageType.TXN_OFFSET_COMMIT, false, RecordBatch.MAGIC_VALUE_V2, false), + DESCRIBE_ACLS(ApiMessageType.DESCRIBE_ACLS), + CREATE_ACLS(ApiMessageType.CREATE_ACLS, false, true), + DELETE_ACLS(ApiMessageType.DELETE_ACLS, false, true), + DESCRIBE_CONFIGS(ApiMessageType.DESCRIBE_CONFIGS), + ALTER_CONFIGS(ApiMessageType.ALTER_CONFIGS, false, true), + ALTER_REPLICA_LOG_DIRS(ApiMessageType.ALTER_REPLICA_LOG_DIRS), + DESCRIBE_LOG_DIRS(ApiMessageType.DESCRIBE_LOG_DIRS), + SASL_AUTHENTICATE(ApiMessageType.SASL_AUTHENTICATE), + CREATE_PARTITIONS(ApiMessageType.CREATE_PARTITIONS, false, true), + CREATE_DELEGATION_TOKEN(ApiMessageType.CREATE_DELEGATION_TOKEN, false, true), + RENEW_DELEGATION_TOKEN(ApiMessageType.RENEW_DELEGATION_TOKEN, false, true), + EXPIRE_DELEGATION_TOKEN(ApiMessageType.EXPIRE_DELEGATION_TOKEN, false, true), + DESCRIBE_DELEGATION_TOKEN(ApiMessageType.DESCRIBE_DELEGATION_TOKEN), + DELETE_GROUPS(ApiMessageType.DELETE_GROUPS), + ELECT_LEADERS(ApiMessageType.ELECT_LEADERS), + INCREMENTAL_ALTER_CONFIGS(ApiMessageType.INCREMENTAL_ALTER_CONFIGS, false, true), + ALTER_PARTITION_REASSIGNMENTS(ApiMessageType.ALTER_PARTITION_REASSIGNMENTS, false, true), + LIST_PARTITION_REASSIGNMENTS(ApiMessageType.LIST_PARTITION_REASSIGNMENTS), + OFFSET_DELETE(ApiMessageType.OFFSET_DELETE), + DESCRIBE_CLIENT_QUOTAS(ApiMessageType.DESCRIBE_CLIENT_QUOTAS), + ALTER_CLIENT_QUOTAS(ApiMessageType.ALTER_CLIENT_QUOTAS, false, true), + DESCRIBE_USER_SCRAM_CREDENTIALS(ApiMessageType.DESCRIBE_USER_SCRAM_CREDENTIALS), + ALTER_USER_SCRAM_CREDENTIALS(ApiMessageType.ALTER_USER_SCRAM_CREDENTIALS, false, true), + VOTE(ApiMessageType.VOTE, true, RecordBatch.MAGIC_VALUE_V0, false, false), + BEGIN_QUORUM_EPOCH(ApiMessageType.BEGIN_QUORUM_EPOCH, true, RecordBatch.MAGIC_VALUE_V0, false, false), + END_QUORUM_EPOCH(ApiMessageType.END_QUORUM_EPOCH, true, RecordBatch.MAGIC_VALUE_V0, false, false), + DESCRIBE_QUORUM(ApiMessageType.DESCRIBE_QUORUM, true, RecordBatch.MAGIC_VALUE_V0, false, false), + ALTER_ISR(ApiMessageType.ALTER_ISR, true), + UPDATE_FEATURES(ApiMessageType.UPDATE_FEATURES, false, true), + ENVELOPE(ApiMessageType.ENVELOPE, true, RecordBatch.MAGIC_VALUE_V0, false, false); + + private static final Map<Integer, ApiKeys> ID_TO_TYPE = new HashMap<>(); static { - int maxKey = -1; - for (ApiKeys key : ApiKeys.values()) - maxKey = Math.max(maxKey, key.id); - ApiKeys[] idToType = new ApiKeys[maxKey + 1]; for (ApiKeys key : ApiKeys.values()) - idToType[key.id] = key; - ID_TO_TYPE = idToType; - MAX_API_KEY = maxKey; + ID_TO_TYPE.put((int) key.id, key); Review comment: I think the generator checks for this. I will double check. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org