KAFKA-10028: Implement write path for feature versioning system (KIP-584) (#9001)
Summary: In this PR, I have implemented the write path of the feature versioning system (KIP-584). Here is a summary of what's in this PR: New APIs in org.apache.kafka.clients.admin.Admin interface, and their client and server implementations. These APIs can be used to describe features and update finalized features. These APIs are: Admin#describeFeatures and Admin#updateFeatures. The write path is provided by the Admin#updateFeatures API. The corresponding server-side implementation is provided in KafkaApis and KafkaController classes. This can be a good place to start the code review. The write path is supplemented by Admin#describeFeatures client API. This does not translate 1:1 to a server-side API. Instead, under the hood the API makes an explicit ApiVersionsRequest to the Broker to fetch the supported and finalized features. Implemented a suite of integration tests in UpdateFeaturesTest.scala that thoroughly exercises the various cases in the write path. Other changes: The data type of the FinalizedFeaturesEpoch field in ApiVersionsResponse has been modified from int32 to int64. This change is to conform with the latest changes to the KIP explained in the voting thread. Along the way, the class SupportedFeatures has been renamed to be called BrokerFeatures, and, it now holds both supported features as well as default minimum version levels. For the purpose of testing, both the BrokerFeatures and FinalizedFeatureCache classes have been changed to be no longer singleton in implementation. Instead, these are now instantiated once and maintained in KafkaServer. The singleton instances are passed around to various classes, as needed. Reviewers: Boyang Chen <boyang@confluent.io>, Jun Rao <junrao@gmail.com>
显示
- clients/src/main/java/org/apache/kafka/clients/admin/Admin.java 68 个添加, 0 个删除...s/src/main/java/org/apache/kafka/clients/admin/Admin.java
- clients/src/main/java/org/apache/kafka/clients/admin/DescribeFeaturesOptions.java 48 个添加, 0 个删除...g/apache/kafka/clients/admin/DescribeFeaturesOptions.java
- clients/src/main/java/org/apache/kafka/clients/admin/DescribeFeaturesResult.java 37 个添加, 0 个删除...rg/apache/kafka/clients/admin/DescribeFeaturesResult.java
- clients/src/main/java/org/apache/kafka/clients/admin/FeatureMetadata.java 111 个添加, 0 个删除.../java/org/apache/kafka/clients/admin/FeatureMetadata.java
- clients/src/main/java/org/apache/kafka/clients/admin/FeatureUpdate.java 78 个添加, 0 个删除...in/java/org/apache/kafka/clients/admin/FeatureUpdate.java
- clients/src/main/java/org/apache/kafka/clients/admin/FinalizedVersionRange.java 84 个添加, 0 个删除...org/apache/kafka/clients/admin/FinalizedVersionRange.java
- clients/src/main/java/org/apache/kafka/clients/admin/KafkaAdminClient.java 152 个添加, 0 个删除...java/org/apache/kafka/clients/admin/KafkaAdminClient.java
- clients/src/main/java/org/apache/kafka/clients/admin/SupportedVersionRange.java 82 个添加, 0 个删除...org/apache/kafka/clients/admin/SupportedVersionRange.java
- clients/src/main/java/org/apache/kafka/clients/admin/UpdateFeaturesOptions.java 29 个添加, 0 个删除...org/apache/kafka/clients/admin/UpdateFeaturesOptions.java
- clients/src/main/java/org/apache/kafka/clients/admin/UpdateFeaturesResult.java 48 个添加, 0 个删除.../org/apache/kafka/clients/admin/UpdateFeaturesResult.java
- clients/src/main/java/org/apache/kafka/common/errors/FeatureUpdateFailedException.java 29 个添加, 0 个删除...che/kafka/common/errors/FeatureUpdateFailedException.java
- clients/src/main/java/org/apache/kafka/common/feature/BaseVersionRange.java 17 个添加, 4 个删除...ava/org/apache/kafka/common/feature/BaseVersionRange.java
- clients/src/main/java/org/apache/kafka/common/feature/FinalizedVersionRange.java 2 个添加, 2 个删除...rg/apache/kafka/common/feature/FinalizedVersionRange.java
- clients/src/main/java/org/apache/kafka/common/feature/SupportedVersionRange.java 7 个添加, 3 个删除...rg/apache/kafka/common/feature/SupportedVersionRange.java
- clients/src/main/java/org/apache/kafka/common/protocol/ApiKeys.java 5 个添加, 1 个删除...c/main/java/org/apache/kafka/common/protocol/ApiKeys.java
- clients/src/main/java/org/apache/kafka/common/protocol/Errors.java 3 个添加, 1 个删除...rc/main/java/org/apache/kafka/common/protocol/Errors.java
- clients/src/main/java/org/apache/kafka/common/requests/AbstractRequest.java 2 个添加, 0 个删除...ava/org/apache/kafka/common/requests/AbstractRequest.java
- clients/src/main/java/org/apache/kafka/common/requests/AbstractResponse.java 2 个添加, 0 个删除...va/org/apache/kafka/common/requests/AbstractResponse.java
- clients/src/main/java/org/apache/kafka/common/requests/ApiVersionsResponse.java 44 个添加, 14 个删除...org/apache/kafka/common/requests/ApiVersionsResponse.java
- clients/src/main/java/org/apache/kafka/common/requests/UpdateFeaturesRequest.java 95 个添加, 0 个删除...g/apache/kafka/common/requests/UpdateFeaturesRequest.java
加载中
想要评论请 注册 或 登录