Search in sources :

Example 1 with FinalizedFeatureKey

use of org.apache.kafka.common.message.ApiVersionsResponseData.FinalizedFeatureKey in project kafka by apache.

the class KafkaAdminClient method describeFeatures.

@Override
public DescribeFeaturesResult describeFeatures(final DescribeFeaturesOptions options) {
    final KafkaFutureImpl<FeatureMetadata> future = new KafkaFutureImpl<>();
    final long now = time.milliseconds();
    final Call call = new Call("describeFeatures", calcDeadlineMs(now, options.timeoutMs()), new LeastLoadedNodeProvider()) {

        private FeatureMetadata createFeatureMetadata(final ApiVersionsResponse response) {
            final Map<String, FinalizedVersionRange> finalizedFeatures = new HashMap<>();
            for (final FinalizedFeatureKey key : response.data().finalizedFeatures().valuesSet()) {
                finalizedFeatures.put(key.name(), new FinalizedVersionRange(key.minVersionLevel(), key.maxVersionLevel()));
            }
            Optional<Long> finalizedFeaturesEpoch;
            if (response.data().finalizedFeaturesEpoch() >= 0L) {
                finalizedFeaturesEpoch = Optional.of(response.data().finalizedFeaturesEpoch());
            } else {
                finalizedFeaturesEpoch = Optional.empty();
            }
            final Map<String, SupportedVersionRange> supportedFeatures = new HashMap<>();
            for (final SupportedFeatureKey key : response.data().supportedFeatures().valuesSet()) {
                supportedFeatures.put(key.name(), new SupportedVersionRange(key.minVersion(), key.maxVersion()));
            }
            return new FeatureMetadata(finalizedFeatures, finalizedFeaturesEpoch, supportedFeatures);
        }

        @Override
        ApiVersionsRequest.Builder createRequest(int timeoutMs) {
            return new ApiVersionsRequest.Builder();
        }

        @Override
        void handleResponse(AbstractResponse response) {
            final ApiVersionsResponse apiVersionsResponse = (ApiVersionsResponse) response;
            if (apiVersionsResponse.data().errorCode() == Errors.NONE.code()) {
                future.complete(createFeatureMetadata(apiVersionsResponse));
            } else {
                future.completeExceptionally(Errors.forCode(apiVersionsResponse.data().errorCode()).exception());
            }
        }

        @Override
        void handleFailure(Throwable throwable) {
            completeAllExceptionally(Collections.singletonList(future), throwable);
        }
    };
    runnable.call(call, now);
    return new DescribeFeaturesResult(future);
}
Also used : ApiVersionsResponse(org.apache.kafka.common.requests.ApiVersionsResponse) SupportedFeatureKey(org.apache.kafka.common.message.ApiVersionsResponseData.SupportedFeatureKey) HashMap(java.util.HashMap) FinalizedFeatureKey(org.apache.kafka.common.message.ApiVersionsResponseData.FinalizedFeatureKey) AbstractResponse(org.apache.kafka.common.requests.AbstractResponse) ChannelBuilder(org.apache.kafka.common.network.ChannelBuilder) KafkaFutureImpl(org.apache.kafka.common.internals.KafkaFutureImpl) AtomicLong(java.util.concurrent.atomic.AtomicLong) ApiVersionsRequest(org.apache.kafka.common.requests.ApiVersionsRequest)

Example 2 with FinalizedFeatureKey

use of org.apache.kafka.common.message.ApiVersionsResponseData.FinalizedFeatureKey in project kafka by apache.

the class ApiVersionsResponse method createFinalizedFeatureKeys.

private static FinalizedFeatureKeyCollection createFinalizedFeatureKeys(Features<FinalizedVersionRange> finalizedFeatures) {
    FinalizedFeatureKeyCollection converted = new FinalizedFeatureKeyCollection();
    for (Map.Entry<String, FinalizedVersionRange> feature : finalizedFeatures.features().entrySet()) {
        final FinalizedFeatureKey key = new FinalizedFeatureKey();
        final FinalizedVersionRange versionLevelRange = feature.getValue();
        key.setName(feature.getKey());
        key.setMinVersionLevel(versionLevelRange.min());
        key.setMaxVersionLevel(versionLevelRange.max());
        converted.add(key);
    }
    return converted;
}
Also used : FinalizedFeatureKeyCollection(org.apache.kafka.common.message.ApiVersionsResponseData.FinalizedFeatureKeyCollection) FinalizedFeatureKey(org.apache.kafka.common.message.ApiVersionsResponseData.FinalizedFeatureKey) FinalizedVersionRange(org.apache.kafka.common.feature.FinalizedVersionRange) Map(java.util.Map)

Aggregations

FinalizedFeatureKey (org.apache.kafka.common.message.ApiVersionsResponseData.FinalizedFeatureKey)2 HashMap (java.util.HashMap)1 Map (java.util.Map)1 AtomicLong (java.util.concurrent.atomic.AtomicLong)1 FinalizedVersionRange (org.apache.kafka.common.feature.FinalizedVersionRange)1 KafkaFutureImpl (org.apache.kafka.common.internals.KafkaFutureImpl)1 FinalizedFeatureKeyCollection (org.apache.kafka.common.message.ApiVersionsResponseData.FinalizedFeatureKeyCollection)1 SupportedFeatureKey (org.apache.kafka.common.message.ApiVersionsResponseData.SupportedFeatureKey)1 ChannelBuilder (org.apache.kafka.common.network.ChannelBuilder)1 AbstractResponse (org.apache.kafka.common.requests.AbstractResponse)1 ApiVersionsRequest (org.apache.kafka.common.requests.ApiVersionsRequest)1 ApiVersionsResponse (org.apache.kafka.common.requests.ApiVersionsResponse)1