-
Deprecated InterfacesInterfaceDescriptionThis API is going to be removed in future releases with no planned replacement. If it cannot be removed from your application, consider copying it into your codebase.We are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider using
ClientGroupas an alternative or reach out to the maintainers describing the use-case.This interface is not used by ServiceTalk internal code anymore and will be removed in the future releases. If you depend on it, consider replicating this implementation in your codebase or reach out to us explaining the use-case.This interface is not used by ServiceTalk internal code anymore and will be removed in the future releases. If you depend on it, consider replicating this implementation in your codebase or reach out to us explaining the use-case.We are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider usingClientGroupas an alternative or reach out to the maintainers describing the use-case.We are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider usingClientGroupas an alternative or reach out to the maintainers describing the use-case.We are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider usingClientGroupas an alternative or reach out to the maintainers describing the use-case.We are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider usingClientGroupas an alternative or reach out to the maintainers describing the use-case.We are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider usingClientGroupas an alternative or reach out to the maintainers describing the use-case.UsePublisher.groupBy(Function, int)instead.UseScanLifetimeMapper.UseScanMapper.UseBufferEncoderandBufferDecoder.This class is not used starting from version 0.42.0 (see PR#1893), we plan to remove it in future releases. In case you have a use-case, let us know.Serialization is now specified viaMethodDescriptor. Compression is configured per route. gRPC framing is internalized in the gRPC implementation.gRPC Service Filters will be removed in future release of ServiceTalk. We encourage the use ofStreamingHttpServiceFilterFactoryand if the access to the decoded payload is necessary, then performing that logic can be done in the particularservice implementation. Please useHttpServerBuilder.appendServiceFilter(StreamingHttpServiceFilterFactory)upon thebuilderobtained usingGrpcServerBuilder.initializeHttp(GrpcServerBuilder.HttpInitializer)if HTTP filters are acceptable in your use case.There is no use of this interface in our codebase, it will be removed in the future releases. If you depend on it, consider replicating a similar interface in your codebase.this interface is not needed anymore and will be removed in a future version with no replacement.We are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider usingClientGroupas an alternative or reach out to the maintainers describing the use-case.UseDelayedRetryExceptioninstead.In areas which requireTimeoutFromRequestuse variants that acceptBiFunction<HttpRequestMetaData,TimeSource,Duration>. E.g.:TimeoutHttpRequesterFilter(BiFunction, boolean),TimeoutHttpServiceFilter(BiFunction, boolean)for filters.useLoadBalancerBuilderinterfaces instead.use theLoadBalancerBuilderimplementations along withLoadBalancerBuilderProviderGeneralTypeserialization is not supported by all serializers. Defer to your specificSerializerimplementation.Use the following types:UseStreamingSerializer.useLateConnectionAcceptorinstead.useLateConnectionAcceptorinstead.This interface will be removed in the future releases.
-
Deprecated ClassesClassDescriptionWe are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider using
ClientGroupas an alternative or reach out to the maintainers describing the use-case.This class is not used by ServiceTalk internal code anymore and will be removed in the future releases. If you depend on it, consider replica ting this implementation in your codebase.We are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider usingClientGroupas an alternative or reach out to the maintainers describing the use-case.We are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider usingClientGroupas an alternative or reach out to the maintainers describing the use-case.We are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider usingClientGroupas an alternative or reach out to the maintainers describing the use-case.This class is not used by ServiceTalk internal code anymore and will be removed in the future releases. If you depend on it, consider replicating this implementation in your codebase.This class is not used by ServiceTalk internal code anymore and will be removed in the future releases. If you depend on it, consider replicating this implementation in your codebase.This internal class will be removed in the future releases without a replacement. If you depend on it, consider copying into your codebase.This internal class will be removed in the future releases without a replacement. If you depend on it, consider copying into your codebase.This class is no longer used by ServiceTalk and will be removed in the future releases. If you depend on it, consider copying into your codebase.this class will be made package-private in the future, rely on theDnsServiceDiscovererBuilderinstead.UseBufferDecoder. This type will be removed along withContentCodec.UseBufferEncoder. This type will be removed along withContentCodec.UseNettyCompressionandNettyBufferEncoders.The gRPC framing is now built into grpc-netty. This class is no longer necessary and will be removed in a future release.ProtoBufSerializationProviderBuilder.registerMessageType(Class, Parser)is used to add one or moreMessageLitemessage types. ResultingGrpcSerializationProviderfromProtoBufSerializationProviderBuilder.build()will only serialize and deserialize those message types.This class will be removed in the future in favor of direct usage ofGrpcClientMetadata. Deprecation ofGrpcMetadata.path()renders this type unnecessary.This class will be removed in the future in favor of direct usage ofGrpcClientMetadata. Deprecation ofGrpcMetadata.path()renders this type unnecessary.UseHttpSerializers.MergeExecutionStrategydirectly instead.useDefaultHttpLoadBalancerFactoryinstead.useDelegatingLoadBalancerBuilderinstead.rely on theLoadBalancers.builder(String)instead.useLoadBalancersinstead.useOpenTelemetryHttpRequesterFilter.Builderinstead.useOpenTelemetryHttpServiceFilter.Builderinstead.use the filter specific buildersOpenTelemetryHttpRequesterFilter.BuilderandOpenTelemetryHttpServiceFilter.Builderinstead.Use implementations of following types:GeneralTypeserialization is not supported by all serializers. Defer to your specificSerializerimplementation. For example jackson offers TypeReference which can be used directly.This API is going to be removed in future releases with no planned replacement. If it cannot be removed from your application, consider copying it into your codebase.this class will be made package-private in the future releases. If you depend on this code, consider copying it into your codebase.Starting from version 0.42.58ConnectionObserverprovides default implementations for all of its callbacks, making the need in this class less relevant. We plan to remove this class from future versions. Consider using default implementations of the interface methods when you are not interested in specific callbacks.This class will be removed in the future releases.
-
Deprecated ExceptionsExceptionsDescriptionWe are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider using
ClientGroupas an alternative or reach out to the maintainers describing the use-case.We are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider usingClientGroupas an alternative or reach out to the maintainers describing the use-case.We are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider usingClientGroupas an alternative or reach out to the maintainers describing the use-case.This class is no longer used by ServiceTalk and will be removed in the future releases. If you depend on it, consider copying into your codebase.This exception type was thrown only byProtoBufSerializationProviderBuilderthat was deprecated and will be removed in future releases. UseSerializationExceptioninstead that can be thrown by a new implementation.UseProxyConnectResponseExceptioninstead
-
Deprecated FieldsFieldDescriptionUse
DefaultGrpcClientMetadata()to create a new instance instead.GrpcClientMetadatacontains modifiableGrpcMetadata.requestContext()andGrpcMetadata.responseContext()now. Using this constant there will be no access to the actual context and both mentioned methods will throwUnsupportedOperationException.UseTransportObserverConnectionFactoryFilterto configureTransportObserverand then listenConnectionObserver.onProxyConnect(Object)callback to distinguish between a regular connection and a connection to the secure HTTP proxy tunnel. For clear text HTTP proxies, consider installing a custom client filter that will populateHttpMetaData.context()with a similar key or reach out to the ServiceTalk developers to discuss ideas.This will be removed in a future release of ST. Alternative offering hereRetryingHttpRequesterFilter.BackOffPolicy.ofNoRetries().
-
Deprecated MethodsMethodDescriptionconsider using higher level client builders to append filters.Implement and use
LoadBalancedAddress.newConnection(ContextMap).requiring this operator is a sign that there is a problem in your operator chain. UseCompletable.defer(Supplier)andCompletable.shareContextOnSubscribe()to control context.requiring this operator is a sign that there is a problem in your operator chain. UsePublisher.defer(Supplier)andPublisher.shareContextOnSubscribe()to control context.UseSingle.concat(Publisher)orSingle.concatDeferSubscribe(Publisher)instead.requiring this operator is a sign that there is a problem in your operator chain. UseSingle.defer(Supplier)andSingle.shareContextOnSubscribe()to control context.useDnsServiceDiscovererObserver.onNewDiscovery(String, String)instead. To avoid breaking changes, all current implementations must implement both methods. In the next version the default implementation will swap. Then users will be able to keep implementation only for the new method. In the release after, the deprecated method will be removed.io.servicetalk.encoding.api.internal.HeaderUtils.encodingFor(Collection<ContentCodec>, CharSequence) UseGrpcExecutionStrategies.offloadNone()instead.UseGrpcRoutes.BlockingResponseStreamingRoute.handle(GrpcServiceContext, Object, BlockingStreamingGrpcServerResponse). In the next release, this method will have a default implementation but the new overload won't. To avoid breaking API changes, make sure to implement both methods. The release after next will remove this method. This intermediate step is necessary to maintainFunctionalInterfacecontract that requires to have a single non-default method. Note: if you also useGrpcRoutes.BlockingResponseStreamingRoute.wrap(GrpcRoutes.BlockingResponseStreamingRoute, GracefulAutoCloseable)method, make sure to pass there an implementation ofGrpcRoutes.BlockingResponseStreamingRoutethat implements both overloads instead of a lambda. Otherwise, the defaultGrpcRoutes.BlockingResponseStreamingRoute.handle(GrpcServiceContext, Object, BlockingStreamingGrpcServerResponse)implementation will be used.UseGrpcRoutes.BlockingStreamingRoute.handle(GrpcServiceContext, BlockingIterable, BlockingStreamingGrpcServerResponse). In the next release, this method will have a default implementation but the new overload won't. To avoid breaking API changes, make sure to implement both methods. The release after next will remove this method. This intermediate step is necessary to maintainFunctionalInterfacecontract that requires to have a single non-default method. Note: if you also useGrpcRoutes.BlockingStreamingRoute.wrap(GrpcRoutes.BlockingStreamingRoute, GracefulAutoCloseable)method, make sure to pass there an implementation ofGrpcRoutes.BlockingStreamingRoutethat implements both overloads instead of a lambda. Otherwise, the defaultGrpcRoutes.BlockingStreamingRoute.handle(GrpcServiceContext, BlockingIterable, BlockingStreamingGrpcServerResponse)implementation will be used.This method is not used starting from version 0.42.0 (see PR#1893), we plan to remove it in future releases. In case you have a use-case, let us know.This method is not used starting from version 0.42.0 (see PR#1893), we plan to remove it in future releases. In case you have a use-case, let us know.Will be removed along withContentCodec.UseGrpcStatusException.fromThrowable(Throwable)to create aGrpcStatusExceptionthenThrowable.getCause().io.servicetalk.health.v1.Health.BlockingHealthClient.check(Health.CheckMetadata, HealthCheckRequest) io.servicetalk.health.v1.Health.BlockingHealthClient.watch(Health.WatchMetadata, HealthCheckRequest) UseHealth.BlockingWatchRpc.watch(GrpcServiceContext, HealthCheckRequest, BlockingStreamingGrpcServerResponse). In the next release, this method will have a default implementation but the new overload won't. To avoid breaking API changes, make sure to implement both methods. The release after next will remove this method. This intermediate step is necessary to maintainFunctionalInterfacecontract that requires to have a single non-default method.Use overload withHttpExecutionStrategyrather thanHttpExecutionStrategyInfluencerUse overload withHttpExecutionStrategyrather thanHttpExecutionStrategyInfluencerUse overload withHttpExecutionStrategyrather thanHttpExecutionStrategyInfluencerUse overload withHttpExecutionStrategyrather thanHttpExecutionStrategyInfluencerUse overload withHttpExecutionStrategyrather thanHttpExecutionStrategyInfluencerUse overload withHttpExecutionStrategyrather thanHttpExecutionStrategyInfluencerUse overload withHttpExecutionStrategyrather thanHttpExecutionStrategyInfluencerUse overload withHttpExecutionStrategyrather thanHttpExecutionStrategyInfluencerUse overload withHttpExecutionStrategyrather thanHttpExecutionStrategyInfluencerUseHttpExecutionStrategies.offloadNone()instead.This method is not useful anymore and will be removed in future releases.ImplementHttpExecutionStrategyInfluencer.requiredOffloads()instead.UseHttpRequestMetaData.contentEncoding()for requests andContentEncodingHttpServiceFilterfor responses. An example can be found here.UseHttpRequestMetaData.contentEncoding(BufferEncoder)for requests andContentEncodingHttpServiceFilterfor responses. An example can be found here.UseHttpProviders.MultiAddressHttpClientBuilderProvider.newBuilder(String, MultiAddressHttpClientBuilder). To avoid breaking changes, all current implementations must implement both methods. In the next version the default implementation will swap. Then users will be able to keep implementation only for the new method. In the release after, the deprecated method will be removed.UseHttpSerializers.textSerializerUtf8()for aggregated. For streaming, use one of the following:HttpSerializers.appSerializerUtf8FixLen()HttpSerializers.appSerializerAsciiVarLen()- Aggregate the payload (e.g.
StreamingHttpRequest.toRequest()) and useHttpSerializers.textSerializer(Charset)if your payload is text HttpSerializers.streamingSerializer(StreamingSerializerDeserializer, Consumer, Predicate)targeted at yourHttpHeaderNames.CONTENT_TYPE
UseHttpSerializers.textSerializer(Charset)for aggregated. For streaming, use one of the following:HttpSerializers.appSerializerUtf8FixLen()HttpSerializers.appSerializerAsciiVarLen()- Aggregate the payload (e.g.
StreamingHttpRequest.toRequest()) and useHttpSerializers.textSerializer(Charset)if your payload is text HttpSerializers.streamingSerializer(StreamingSerializerDeserializer, Consumer, Predicate)targeted at yourHttpHeaderNames.CONTENT_TYPE
io.servicetalk.http.api.HttpSerializationProviders.textDeserializer(Charset, Predicate<HttpHeaders>) UseHttpSerializers.textSerializer(Charset)for aggregated. For streaming, use one of the following:HttpSerializers.appSerializerUtf8FixLen()HttpSerializers.appSerializerAsciiVarLen()- Aggregate the payload (e.g.
StreamingHttpRequest.toRequest()) and useHttpSerializers.textSerializer(Charset)if your payload is text HttpSerializers.streamingSerializer(StreamingSerializerDeserializer, Consumer, Predicate)targeted at yourHttpHeaderNames.CONTENT_TYPE
UseHttpSerializers.textSerializerUtf8()for aggregated. For streaming, use one of the following:UseHttpSerializers.textSerializer(Charset)for aggregated. For streaming, use one of the following:UseHttpSerializers.textSerializer(Charset)for aggregated. For streaming, use one of the following:useDefaultHttpLoadBalancerFactoryand wrap the raw load balancer factory you're interested in using.UseHttpClients.forMultiAddressUrl()to createMultiAddressHttpClientBuilder, then useMultiAddressHttpClientBuilder.initializer(SingleAddressInitializer)to overrideServiceDiscovererusingSingleAddressHttpClientBuilder.serviceDiscoverer(ServiceDiscoverer)for all or some of the internal clients.We are unaware of anyone using "partition" feature and plan to remove it in future releases. If you depend on it, consider usingClientGroupas an alternative or reach out to the maintainers describing the use-case.In areas which requireTimeoutFromRequestuse variants that acceptBiFunction<HttpRequestMetaData,TimeSource,Duration>. E.g.:TimeoutHttpRequesterFilter(BiFunction, boolean),TimeoutHttpServiceFilter(BiFunction, boolean)for filters. Note that passedBiFunctionshould never block.use {#LoadBalancers} constructors instead.UseStreamingDeserializerthat understands your protocol's framing.UseStreamingDeserializerthat understands your protocol's framing.UseDeserializer.UseDeserializer.UseSerializerUseStreamingDeserializerthat understands your protocol's framing.UseStreamingSerializer.use the bind method with early and late acceptors instead.UseinsteadImplementEarlyConnectionAcceptor.accept(ConnectionContext)insteadImplementLateConnectionAcceptor.accept(ConnectionContext)insteadUse#initChannel(Channel, ExecutionContext, CloseHandler, FlushStrategy, long, SslConfig, ChannelInitializer, Protocol, ConnectionObserver, boolean, Predicate).Use#initChannel(Channel, ExecutionContext, CloseHandler, FlushStrategy, long, SslConfig, ChannelInitializer, Protocol, ConnectionObserver, boolean, Predicate).Use#initChannel(Channel, ExecutionContext, CloseHandler, FlushStrategy, long, SslConfig, ChannelInitializer, Protocol, ConnectionObserver, boolean, Predicate).Use#initChildChannel(Channel, ConnectionContext, CloseHandler, FlushStrategy, long, Protocol, ChannelConfig, StreamObserver, boolean, Predicate, UnaryOperator).Use#initChildChannel(Channel, ConnectionContext, CloseHandler, FlushStrategy, long, Protocol, ChannelConfig, StreamObserver, boolean, Predicate, UnaryOperator).Use#initChildChannel(Channel, ConnectionContext, CloseHandler, FlushStrategy, long, Protocol, ChannelConfig, StreamObserver, boolean, Predicate, UnaryOperator).IoExecutor now implementsExecutorso this method is redundant.UseNettyPipelineSslUtils.extractSslSession(ChannelPipeline, SslHandshakeCompletionEvent, Consumer)instead, reporting toConnectionObserver.SecurityHandshakeObserveris handled automatically for allSslHandlers initialized bySslClientChannelInitializerorSslServerChannelInitializer.UseNettyPipelineSslUtils.extractSslSession(SslConfig, ChannelPipeline)instead, reporting toConnectionObserver.SecurityHandshakeObserveris handled automatically for allSslHandlers initialized bySslClientChannelInitializerorSslServerChannelInitializernot required anymore, will be removed in the future releases, seeNettyPipelineSslUtils.extractSslSessionAndReport(SslConfig, ChannelPipeline, ConnectionObserver)for an alternative approachThis method is not used by ServiceTalk internals anymore and will be removed in the future releases. Replacement API isNettyServerContext.wrap(Channel, ListenableAsyncCloseable, AsyncCloseable, ExecutionContext).This method is not used by internal ServiceTalk code anymore and will be removed in future releases.
-
Deprecated ConstructorsConstructorDescriptionuse
DnsServiceDiscoverers.builder(String)instead.this constructor is not needed anymore, useGrpcRoutes()instead.UseGrpcStatusExceptionif there is aThrowablecause.UseGrpcStatusExceptionif there is a cause orGrpcStatus(GrpcStatusCode, String).UseBuilder()and set the custom strategy onHealth.ServiceFactory.Builder.routeExecutionStrategyFactory(RouteExecutionStrategyFactory)instead.UseBuilder()and set the custom strategy onHealth.ServiceFactory.Builder.routeExecutionStrategyFactory(RouteExecutionStrategyFactory)instead.useHealth.ServiceFactory.Builder.routeExecutionStrategyFactory(RouteExecutionStrategyFactory)on the Builder instead.useLoadBalancers.builder(String)instead.use theOpenTelemetryHttpRequesterFilter.Builderto create new filter instances.use theOpenTelemetryHttpRequesterFilter.Builderto create new filter instances.use theOpenTelemetryHttpRequesterFilter.Builderto create new filter instances.UseOpenTelemetryHttpRequesterFilter.Builderinstead.this method is internal, no user should be setting theOpenTelemetryas it is obtained by usingGlobalOpenTelemetry.get()and there should be no other implementations but the one available in the classpath, this constructor will be removed in the future releases. UseOpenTelemetryHttpRequesterFilter.Builderinstead.UseOpenTelemetryHttpRequesterFilter.Builderinstead.UseOpenTelemetryHttpRequesterFilter.Builderinstead.UseOpenTelemetryHttpServiceFilter.Builderinstead.this method is internal, no user should be setting theOpenTelemetryas it is obtained by usingGlobalOpenTelemetry.get()and there should be no other implementations but the one available in the classpath, this constructor will be removed in the future releases. UseOpenTelemetryHttpServiceFilter.Builderinstead.UseOpenTelemetryHttpServiceFilter.Builderinstead.use theOpenTelemetryHttpServiceFilter.Builderto construct filter instances.use theOpenTelemetryHttpServiceFilter.Builderto construct filter instances.