THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
Code Block | ||
---|---|---|
| ||
// ---- START: Proposed Admin API definitions ---- /** * Describes supported and finalized features. You may anticipate * certain exceptions when calling get() on the future obtained from the returned * DescribeFeaturesResult. * * @param options options for the describeFeatures API, * * @return a result object containing: * 1. List of cluster-wide finalized feature versions. * 2. List of supported feature versions specific to the broker. */ DescribeFeaturesResult describeFeatures(DescribeFeaturesOptions options); /** * Update the feature versions supported cluster-wide. You may * anticipate certain exceptions when calling get() on the futures * obtained from the returned UpdateFeaturesResult. * * @param updates map of feature updates, keyed by the * name of the feature * @param options options for the updateFeatures API * * @return the results of the FeatureUpdate provided in the request */ UpdateFeaturesResult updateFeatures(Map<String, FeatureUpdate> featureUpdates, UpdateFeaturesOptions options); // ---- END: Proposed Admin API definitions ---- // Represents a cluster-wide finalized feature, with a feature version levels. class FinalizedFeature { // The name of the feature. String name(); // The cluster-wide finalized value of the feature min version level (value >= 1). int16 minVersionLevel(); // The cluster-wide finalized value of the feature max version level (value >=1 and value >= minVersionLevel). int16 maxVersionLevel(); } // Represents a feature that is supported by a broker, with a specific // feature version range [minVersion, maxVersion]. class SupportedFeature { // The name of the feature. String name(); // The minimum version (value >= 1) of the supported feature. int16short minVersion(); // The maximum version (value >=1 and value >= minVersion) of the supported feature. int16short maxVersion(); } // Represents an update to a Feature, which can be sent to the controller // for processing. class FeatureUpdate { // The name of the feature to be updated. String name(); // The cluster-wide finalized NEW value of the feature max version level. // - When >= 1, it's the new value to-be-updated for the finalized feature. // - When < 1, it indicates the deletion of a finalized feature. long maxVersionLevel(); // Return true only if downgrade/deletion of a feature should be allowed. // Note that despite this allowDowngrade flag being set, certain downgrades // may be rejected by the controller if it is deemed unsafe to downgrade // the max version level of some specific feature. bool allowDowngrade(); } // Represents a collection of feature metadata. class FeatureMetadata { // The set of cluster-wide finalized features, keyed by feature name. Set<FinalizedFeature> finalizedFeatures(); // The monotonically increasing epoch for the finalized features. int32Optional<Integer> epoch(); // The set of features supported by a broker, keyed by feature name. Set<SupportedFeature> supportedFeatures(); } class DescribeFeaturesResult { /** * The data returned in the future contains the latest entire set of * finalized cluster-wide features, as well as the entire set of * features supported by the broker serving this read request. */ KafkaFuture<FeatureMetadata> featureMetadata(); } class UpdateFeaturesResult { /** * Returns a future which succeeds only if all the FeatureUpdate in the request succeed. */ KafkaFuture<Void> all(); /** * Returns a map with key being feature name and value being * the future which can be used to check the status of the FeatureUpdate * in the request. * * Possible error codes: * - NONE: The FeatureUpdate succeeded. * - NOT_CONTROLLER: The FeatureUpdate failed since the request was processed by a broker that's not the controller. * - CLUSTER_AUTHORIZATION_FAILED: The FeatureUpdate failed since there wasn't sufficient permission to perform the update. * - INVALID_REQUEST: The FeatureUpdate failed because it is invalid. * - FEATURE_UPDATE_FAILED: The FeatureUpdate failed because it can not be applied (ex: due to version incompatibilities) */ Map<String, KafkaFuture<Void>> values(); } |
...