servicetalk

A networking framework that evolves with your application

APACHE-2.0 License

Stars
914
Committers
58

Bot releases are hidden (Show)

servicetalk - 0.42.10

Published by bondolo over 2 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several useful improvements and bug fixes. This release is expected to be a "drop-in" replacement for all prior 0.42.X releases.

The 0.41.x branch is now EOL. Please plan your migrations accordingly, and let us know if you have any questions. The recommended path is:

  1. Update to the latest version of 0.41.x (https://github.com/apple/servicetalk/releases/tag/0.41.16)
  2. Resolve all deprecations. All deprecations include javadocs explaining the recommended replacement approach. The javadocs can pulled by your IDE and also viewable on the 0.41 docs website.
  3. Update to latest version of 0.42.x (see https://github.com/apple/servicetalk/releases - currently this release, 0.42.10)

Bug Fixes

Dependency Updates

Documentation & Examples

CI/Build


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report any unintended omission.

@bondolo
@chemicL
@eddie4941
@idelpivnitskiy
@Scottmitch
@tkountis

servicetalk - 0.42.9

Published by chemicL over 2 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several useful new features, improvements, and bug fixes. This release is expected to be a "drop-in" replacement for all prior 0.42.X releases.

API Deprecations

New Features

Improvements

Bug Fixes

Dependency Updates

Documentation & Examples

CI/Build


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report any unintended omission.

@bondolo
@chemicL
@eddie4941
@idelpivnitskiy
@saturnism
@Scottmitch
@suman-ganta
@tkountis

servicetalk - 0.41.16

Published by bondolo over 2 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk 0.41 users that contains several bug fixes and improvements. The 0.41.X releases are provided for users operating legacy production systems, most users should migrate to the current mainline 0.42 releases.

Bug fixes


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report any unintended omission.

  • @bondolo
  • @chemicL
  • @Scottmitch
  • @tkountis
servicetalk - 0.42.8

Published by chemicL over 2 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

API deprecation

  • https://github.com/apple/servicetalk/commit/b92caff07c6ba0498ef0ebb469718972d86b27d7 - Deprecate HttpClients.forMultiAddressUrl(ServiceDiscoverer) (#2132)
    • Instead, MultiAddressHttpClientBuilder#initializer(SingleAddressInitializer) should be used to override ServiceDiscoverer using SingleAddressHttpClientBuilder#serviceDiscoverer(ServiceDiscoverer).
  • https://github.com/apple/servicetalk/commit/a452927ccf86a9b39c4be1aca658eeb5505b48f2 - Deprecated PartitionedHttpClientBuilder and partition client APIs (#2131)
    • PartitionedHttpClientBuilder is hard to use because it requires implementation of a special ServiceDiscoverer that we do not provide OOTB. We are unaware of anyone using this feature, but if there are any users they should consider ClientGroup as an alternative or reach out to us to provide more context why the PartitionedHttpClientBuilder is required.
  • https://github.com/apple/servicetalk/commit/9c3ed5ab3ff0db751cf707039928d80621f17849 - grpc-protoc ServiceFactory.Builder #addService(BlockingService) -> #addBlockingService(BlockingService) (#2143)
    • The existing overloaded method required casting to disambiguate calls or implied compiler warnings when the argument was a lambda. We added a specific method for the blocking service argument to improve the API.

New features

Improvements

Bug fixes

Examples

Documentation

Build / CI


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report any unintended omission.

  • @bondolo
  • @chemicL
  • @idelpivnitskiy
  • @Scottmitch
  • @tkountis
servicetalk - 0.42.7

Published by Scottmitch over 2 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

Improvements

Dependencies

Examples

Build / CI


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

  • @idelpivnitskiy
  • @Scottmitch
servicetalk - 0.42.6

Published by Scottmitch over 2 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

Bug fixes

Testing

servicetalk - 0.42.4

Published by Scottmitch over 2 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

Bug fixes

servicetalk - 0.41.15

Published by tkountis over 2 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

New features

Bug fixes

Improvements

Improvements for tests


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

  • @bondolo
  • @chemicL
  • @idelpivnitskiy
  • @saturnism
  • @Scottmitch
  • @sullis
  • @tkountis
servicetalk - 0.42.3

Published by chemicL over 2 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements. It contains all changes released in 0.41.15 plus the following:

New features

Bug fixes

Improvements

Improvements for tests

Documentation

Dependencies


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

  • @bondolo
  • @chemicL
  • @idelpivnitskiy
  • @saturnism
  • @Scottmitch
  • @sullis
  • @tkountis
servicetalk - 0.42.2

Published by idelpivnitskiy over 2 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements. It contains all changes released in 0.41.14 plus the following:

New features

Bug fixes

Improvements

Documentation


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

  • @bondolo
  • @chemicL
  • @idelpivnitskiy
  • @Scottmitch
  • @tkountis
servicetalk - 0.41.14

Published by idelpivnitskiy over 2 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

New features

Bug fixes

Improvements

Documentation

Dependencies


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

  • @bondolo
  • @chemicL
  • @idelpivnitskiy
  • @Scottmitch
  • @tkountis
servicetalk - 0.42.1

Published by idelpivnitskiy almost 3 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements. It contains all changes released in 0.41.13 plus the following:

New features

Improvements

Documentation

Dependencies


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

  • @bondolo
  • @chemicL
  • @idelpivnitskiy
  • @Scottmitch
  • @tkountis
servicetalk - 0.41.13

Published by idelpivnitskiy almost 3 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements. It contains important bug fixes for retry logic configuration, upgrades netty to 4.1.73 which relaxes duplicated native library detection, protobuf to 3.19.2 which fixes a potential Denial of Service issue, log4j to 2.17.1 which fixes CVE-2021-44832.

New features

API deprecation

Developer note: Additional API deprecation advisories and guidance have been added in each of the 0.41.X releases. Please build your application with the latest 0.41.X release and carefully review the deprecation warnings reported and associated suggestions. Changes to applications may be required for compatibility with future versions of ServiceTalk beyond the API compatible 0.41.X series. While there are many deprecations for planned future API changes, most applications should require few changes as the most significant changes are to internal or specialized APIs. If you have concerns or expect problems related to any of the API deprecations please report these as an issue.

Bug fixes

Improvements

Documentation

Dependencies


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

  • @Abdelrahman-IK
  • @bondolo
  • @chemicL
  • @idelpivnitskiy
  • @Scottmitch
  • @tkountis
servicetalk - 0.42.0

Published by bondolo almost 3 years ago

Overview

This is a major ServiceTalk feature release appropriate for all users containing numerous new features and many improvements. We are actively working towards ServiceTalk 1.0 and this intermediate release helps us to refine and stabilize the API. Existing ServiceTalk applications will need to be recompiled to use the 0.42 release and will likely require some code changes or migration to the new API. Also, make sure all other libraries or extensions that depends on the ServiceTalk API in your classpath are also recompiled with 0.42.

Changes

The 0.42.0 release includes significant new features and API changes but incorporates as closely as possible the same dependencies and bug fixes as the prior 0.41.12 release.

Offloading Changes

In addition to the API changes, ServiceTalk 0.42 includes some significant behavioral differences that may impact existing applications. Offloading, the execution of user code on non-I/O threads, is one area that has changed significantly. In ServiceTalk 0.41 and earlier the strategy used for offloading was applied more generally than in 0.42. This meant that most user code, even code which did not expect to be offloaded, was offloaded from I/O threads. This approach had the advantages of consistency and safety; the execution environment for user code was predictable and the Netty I/O threads were protected from being unavailable while executing application code.
In ServiceTalk 0.42 the offloading strategy is more focused and offloading is done in fewer situations, primarily only those situations which explicitly require offloading. Offloading is an expensive activity. If the application or ServiceTalk logic which needs to be executed is insignificant or carefully bounded and never blocks then avoiding offloading has a positive impact on both latency and throughput. Offloading is controlled by the use of the publishOn and subscribeOn offloading operators and for filters and services by implementing the StrategyInfluencer interface.

Executors and other operators

In prior versions of ServiceTalk all operators could access the most recently referenced Executor in the operator pipeline. In 0.42 the intended executor for executing the operations pipeline is only exposed to offloading operators. Other operators are effectively “immediate” meaning that they expect to run on whatever thread is active when they are invoked, the timeout and liftAsync operators are affected.

Retrying / Auto-Retrying filters

RetryingHttpRequesterFilter & Auto-Retrying filters/API were unified in a new RetryingHttpRequesterFilter now available under io.servicetalk.http.netty package. The new filter offers support for handling lower level transport errors and retrying them (ie. what Auto-Retry was offering before) as well as allowing users to define their own retry rules per request/response basis.

RetryingHttpRequesterFilter offers fine grain control over retry behavior, here are some highlights:

  • retryRetryableExceptions
    Supports retry behavior for RetryableException which are transport layer errors that occur inside ST and signal erroneous behavior before a request touches the “wire”. By default this is enabled and behaves the same way Auto-Retry was before.
  • retryIdempotentRequests
    Supports retry behavior for requests that are marked as idempotent when an I/O exception occurs.
  • retryDelayedRetries
    Supports retry behavior for errors that are type of DelayedRetry a marker interface that holds additional backoff time info, to be evaluated when the total back-off time is computed. One possible situation that this can be useful is if users want to translate a Retry-After header in a response, and allow the retry-filter to wait for that amount of time (ie. retry-after period) before retrying.
  • responseMapper & retryResponses
    Supports mapping any response to an HttpResponseException giving the ability to users to retry particular responses according to their own criteria. First you map the response to an error with responseMapper then you define the retry behavior through retryResponses.

All above flavors offer fine control over the retry behavior of each retry criterion, e.g retry up-to 5 times retryable exceptions, and up-to 2 times delayed retries with max-delay of 2 seconds. On top of that, users can define a max-total retry count, that can be used to exit the retry logic if the cumulative amount of retries (of all retry configurations) reaches that count.

The RetryingHttpRequesterFilter is by default enabled and added as the last filter in the filter chain, similarly to how auto-retry behaved before, only retrying RetryableExceptions, however if users define their own version of that and apply it in a particular placement in their filter chain, then this order/configuration takes precedence over the default behavior.

This work was ignited as an effort to minimize the places users have to define retry logic, and avoid situations where these placements conflict with each other resulting in retry logic that wasn’t expected.

Serialization

Interfaces from the io.servicetalk.serialization.api package have been deprecated (SerializationProvider, ..). The deprecated interfaces have been replaced with new interfaces in io.servicetalk.serializer.api. The new APIs apply lessons learned from usage of deprecated APIs and here are some highlights:

  • Composition between scalar serializers in streaming use cases. Streaming serializers provide reusable framing (Length Delimited VarInt/Fixed, gRPC) across different serialization technologies (Protobuf, thrift, ..).
  • Encapsulation of serialization allows exposing streaming building blocks while hiding custom framing (gRPC SerializerDescriptor).
  • Streaming APIs leverage Reactive Streams lifecycle and primitives instead of custom APIs and lifecycle.
  • Support for JDK primitive types such as byte[] and String. See how these utilities are composed/leveraged in HttpSerializers.

Checkout the http serialization examples to see the new APIs in action. Javadocs on each deprecated type include @deprecated notices referencing the replacement classes, and here is a summary of commonly used types:

Builders

General

  • All builders (client & server, HTTP & gRPC) have been changed from abstract classes to interfaces to allows users wrap them to enhance/modify behavior. Method names didn’t change. HTTP users should not notice this change as soon as they recompile with 0.42, gRPC users may need to migrate their HTTP-specific configuration to HttpInitializer API (see #1867 and #1861). Resolving all deprecations highlighted building for 0.41.12 will make this transition smooth when upgrading to 0.42.
  • All one-way builder methods, like HttpServerBuilder.disableDrainingRequestPayloadBody(), have been changed to take a boolean argument to allow users enable/disable a feature it controls. Migrate from all deprecated builder methods in 0.41.12 or see #1750, #1823, and #1825 for the full list of methods.

Server builders

  • All listen* methods return a protocol-specific context now: Single<HttpServerContext> for HTTP and Single<GrpcServerContext> for gRPC. Previously, these methods returned Single<ServerContext>.

MultiAddressHttpClientBuilder & PartitionedHttpClientBuilder

  • Both builders now use SingleAddressInitializer abstraction to give access to the underlying SingleAddressHttpClientBuilder(s)

MultiAddressHttpClientBuilder

  • maxRedirects(int)followRedirects(RedirectConfig)
  • redirects are disable by default now, use followRedirects(RedirectConfig) to enable them

Filters API

  • 0.41.12 simplified client-side filters API to remove HttpExecutionStrategy from the arguments, see #1956.

Users should update their filters to override one or more of the request or reserveConnection methods that does not take HttpExecutionStrategy as an argument. If modifications for the HttpExecutionStrategy are required, use HttpContextKeys#HTTP_EXECUTION_STRATEGY_KEY. See changes for HostHeaderHttpRequesterFilter as an example of how to migrate a filter. After this migration is done with 0.41.12 version, 0.42 won’t cause any issues.

Note: All StreamingHttpClientFilter implementations should use delegate.request(...) instead of invoking super.request(delegate, ...). Invoking a super class implementation may lead to unexpected behavior change with new releases.

  • append method have been removed from all filter factories: ConnectionFactoryFilter, GrpcServiceFilterFactory, MultiAddressHttpClientFilterFactory, StreamingHttpClientFilterFactory, StreamingHttpConnectionFilterFactory, StreamingHttpServiceFilterFactory because the resulting factories did not allow correct computation of the combined execution strategy. Consider using appropriate append* methods on the client/server builder intead.
  • MultiAddressHttpClientFilterFactory have been removed, migrate to MultiAddressHttpClientBuilder#SingleAddressInitializer and use SingleAddressHttpClientBuilder#appendClientFilter(...).
  • GrpcClientBuilder#MultiClientBuilder and GrpcClientBuilder#buildMulti have been removed, use GrpcClientFactory#newClient(GrpcClientCallFactory) if necessary.

ServiceDiscoverer API

A new ServiceDiscovererEvent.Status type was introduced to let SD use a non-binary state of the address. ServiceDiscovererEvent#isAvailable() is replaced with ServiceDiscovererEvent#status().

DefaultDnsServiceDiscoverer is using ServiceDiscovererEvent.Status.EXPIRED by default.

ServiceDiscoveryRetryStrategy and DefaultServiceDiscoveryRetryStrategy have been deprecated in 0.41.12 and removed in 0.42 in favor of a standard BiIntFunction<Throwable, ? extends Completable> API of RetryStrategies.

LoadBalancer API

  • LoadBalancerFactory#newLoadBalancer :

    • an extra String argument was added that describes a target resource for connections. It helps with debuggability.
    • eventStream publisher was changed from Publisher<? extends ServiceDiscovererEvent> to Publisher<? extends Collection<? extends ServiceDiscovererEvent>> to align it with ServiceDiscoverer API.
  • RoundRobinLoadBalancer.RoundRobinLoadBalancerFactory become a top level class with the builder.

  • RoundRobinLoadBalancer changed its visibility from public to pkg-private, RoundRobinLoadBalancerFactory should be used instead.

  • RoundRobinLoadBalancer.RoundRobinLoadBalancerFactory.Builder#eagerConnectionShutdown(boolean) was removed because ServiceDiscovererEvent.Status can provide all necessary information. The same behavior can be achieved by configuring DefaultDnsServiceDiscovererBuilder#missingRecordStatus(ServiceDiscovererEvent.Status.UNAVAILABE).

If you have a custom implementation of the LoadBalancer interface, consider supporting all new statuses from the ServiceDiscoverer: AVAILABLE, UNAVAILABLE, EXPIRED.

HTTP API

  • Parent interface of StatelessTrailersTransformer have been changed from TrailersTransformer<Object, Payload> to TrailersTransformer<Void, Payload>.
  • BlockingStreamingHttpServerResponse was converted from an abstract class to an interface.
  • HttpClients.*viaProxy(...) methods have been removed in favor of SingleAddressHttpClientBuilder#proxyAddress(...) configuration option after using a regular HttpClients.forSingleAddress(...) factory.

Exceptions

Removed exception types that were public but never thrown by ServiceTalk (see #1920):

  • ConnectionClosedException
  • InvalidRedirectException
  • MaxRequestLimitExceededException
  • MaxRequestLimitExceededRejectedSubscribeException

Some exception types were changed to use more appropriate parent type:

  • ConnectionRejectedException extends RuntimeExceptionSocketException;
  • NoAvailableHostException extends RuntimeExceptionIOException;
  • DuplicateAttributeException extends RuntimeExceptionIllegalStateException;
  • TerminateRepeatException extends ExceptionRuntimeException;
  • ClosedServiceDiscovererException extends RuntimeExceptionClosedChannelException;

Observability

TransportObserver - gives low level visibility into L4 network level

Some existing callbacks were improved to take extra arguments that help to increase visibility:

  • TransportObserver#onNewConnection()TransportObserver#onNewConnection(Object, Object) - tells which local/remote address is used for a new connection. Previously, it was impossible to know what was the remote peer if a connect attempt fails.
  • ReadObserver#itemRead()ReadObserver#itemRead(Object) - tells which object have been read from the network.
  • WriteObserver#itemReceived()WriteObserver#itemReceived(Object) - tells which object have been received for a write operation.
  • WriteObserver#itemWritten()WriteObserver#itemWritten(Object) - tells which object have been serialized and written to the OS network buffer.

New callbacks that have to be implemented:

  • WriteObserver#itemFlushed() - notifies when a previously written object have been flushed to the network.
  • StreamObserver#streamIdAssigned(long) - notifies when a steam of a multiplexed connection (HTTP/2) gets an assigned id number.
  • ConnectionObserver#onTransportHandshakeComplete() - notifies when a transport protocol completes a handshake (like TCP 3-way handshake).

Tracing

Due to a bug in our B3 header handling, we weren’t able to handle all possible sampling states as defined by the specification. More specifically the lack of presence of x-b3-sampled, was being mishandled as if the carrier was suggesting no-sampling.

The behavior was address by changing the API to support Boolean type sampling flag, restoring the possibility of 3-state option.

  • InMemorySpanContext#isSampled boolean → Boolean

Additional API changes:

  • Removed InMemoryTraceState, SpanContext was enhanced to bridge API gap.
  • Trace identifiers were removed from the Span level, instead the SpanContext houses them now.

Other

  • NettyIoExecutors#createIoExecutor(ThreadFactory) now requires io.servicetalk.transport.api.IoThreadFactory.

Removed functionality

  • gRPC filters have been removed. HTTP filters should be used to cover most use-cases. When an API-specific filter is required or when you need to filter deserialized proto objects extending/wrapping your GrpcClient or GrpcService should provide the same level of control.

Upgrading to ServiceTalk 0.42

ServiceTalk 0.42 contains significant API and behavior updates as well as new API deprecations. Most applications will require some changes to use the 0.42 release. For applications developed using ServiceTalk 0.41 or earlier the best approach for updating an application to use the 0.42 release is to begin by updating the application to use the latest 0.41 release, currently 0.41.12. Once all deprecation warning have been resolved and tests are passing, only then begin upgrading to the 0.42 release.
Applications built with much older ServiceTalk releases should upgrade incrementally through the latest release of each minor version until arriving at ServiceTalk 0.42. Fully rebuilding applications with each intermediate ServiceTalk version will provide the most complete deprecation and upgrading advice. Fully rebuilding applications with each intermediate ServiceTalk release will provide the most complete deprecation and upgrading advice and ensure that generated gRPC code is remains compatible with the application usage.
Application developers should also pay careful attention to the API deprecations found in 0.42. Future 0.42.X releases, when they occur, will be compatible with this 0.42.0 release, but 0.43 and beyond versions of ServiceTalk will remove the currently deprecated APIs. Fortunately, it is currently expected that the ServiceTalk API will be more stable in future releases through the eventual ServiceTalk 1.0 release. Thank you for your understanding and cooperation on the way to 1.0!

New features

Behavior changes

Bug fixes

Improvements

API Improvements

Removed API

Build/Release/Github actions

Dependency upgrades

Documentation


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

@bondolo
@cancecen
@chemicL
@danfaer
@idelpivnitskiy
@Krupskis
@madrob
@mikhail-shibanov
@rnett
@Scottmitch
@sikevux
@sullis
@tkountis
@vglushak

servicetalk - 0.41.12

Published by bondolo almost 3 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

New features

API deprecation

Developer note: Additional API deprecation advisories and guidance have been added in each of the 0.41.X releases. Please build your application with the latest 0.41.X release and carefully review the deprecation warnings reported and associated suggestions. Changes to applications may be required for compatibility with future versions of ServiceTalk beyond the API compatible 0.41.X series. While there are many deprecations for planned future API changes, most applications should require few changes as the most significant changes are to internal or specialized APIs. If you have concerns or expect problems related to any of the API deprecations please report these as an issue.

  • https://github.com/apple/servicetalk/commit/3c2d0e233cf45db56c2e8c79bcb7b812c7afc8b2 - Remove HttpExecutionStrategy from requester and reserveConnection API (#1956)
    • Users should update their filters to override another request or reserveConnection methods that do not take HttpExecutionStrategy as an argument. If modifications for the HttpExecutionStrategy are required, use HttpContextKeys#HTTP_EXECUTION_STRATEGY_KEY;
  • https://github.com/apple/servicetalk/commit/ebe29110c62a69cb48fbc4c636c9d4036efcf711 - Deprecate ServiceDiscoveryRetryStrategy (#1931)
    • Deprecated ServiceDiscoveryRetryStrategy and DefaultServiceDiscoveryRetryStrategy;
    • Deprecated PartitionedHttpClientBuilder#retryServiceDiscoveryErrors(ServiceDiscoveryRetryStrategy) and introduced a variant accepting BiIntFunction<Throwable, ? extends Completable>;
    • Deprecated SingleAddressHttpClientBuilder#retryServiceDiscoveryErrors(ServiceDiscoveryRetryStrategy) and introduced a variant accepting BiIntFunction<Throwable, ? extends Completable>.
  • https://github.com/apple/servicetalk/commit/9c66e411d9bfe6148ffaa690012f2e2fe8c0d932 - Deprecate and replace noOffloadsStrategy() (#1989)
    • noOffloadsStrategy() is deprecated and the more descriptive offloadNever() is introduced to replace it.
  • https://github.com/apple/servicetalk/commit/0d7085174d00f18ce6b0795d2d6ff3db220b1d0f - Unified retry / auto-retry filter support (#2020)
    • A new variant of RetryingHttpRequesterFilter was introduced in io.servicetalk.http.netty package;
    • io.servicetalk.http.utils.RetryingHttpRequesterFilter and AutoRetryStrategyProvider are deprecated and their logic in consolidated in io.servicetalk.http.netty.RetryingHttpRequesterFilter;
  • https://github.com/apple/servicetalk/commit/34f726e512f5bfa4b76c6f52444abfcec8efbdad - Migrate AsyncContext to ContextMap API (#1910)
    • API modifications:
      • Deprecate AsyncContextMap in favor of ContextMap API;
      • Deprecate AsyncContextMapHolder in favor of ContextMapHolder;
      • AsyncContext: deprecate all methods that reference AsyncContextMap and add new static methods that target ContextMap API;
      • Add temporarily method AsyncContext.newKeyMapping to allow mapping AsyncContextMap.Key <-> ContextMap.Key to let users use old/new API in the same codebase;
      • IoThreadFactory.IoThread extends deprecated AsyncContextMapHolder, consider migrating to NettyIoExecutors static factories that do not require an IoThreadFactory. If your codebase implements IoThreadFactory, make sure it also implements ContextMapHolder;
      • BasicAuthHttpServiceFilter: deprecate userInfoKey(AsyncContextMap.Key) in favor of userInfoAsyncContextKey(ContextMap.Key) and userInfoRequestContextKey(ContextMap.Key);
      • BasicAuthSecurityContextFilters: deprecate forGlobalBinding(AsyncContextMap.Key) in favor of forGlobalBinding(ContextMap.Key) and forNameBinding(AsyncContextMap.Key) in favor of forNameBinding(ContextMap.Key);
    • Behavior changes:
      • AsyncContext.put(...) and AsyncContext.putAll(...) don't throw UnsupportedOperationException when AsyncContext is disabled;
      • Default implementation of AsyncContext more strictly validates null keys. null keys were never allowed, but pre-existing behavior throws NPE on AsyncContext.get(key) instead of AsyncContext.put(null, value);

Improvements

Bug Fixes

Documentation

Dependencies

This release upgrades Netty to 4.1.72 which contains an important fix for CVE-2021-43797 and Log4J to 2.16.0 which contains fixes for CVE-2021-44228 and CVE-2021-45046.


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

@bondolo
@chemicL
@idelpivnitskiy
@Scottmitch
@tkountis

servicetalk - 0.41.11

Published by idelpivnitskiy almost 3 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

Bug fixes

Improvements


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

  • @bondolo
  • @chemicL
  • @tkountis
  • @Scottmitch
  • @idelpivnitskiy
servicetalk - 0.41.10

Published by chemicL almost 3 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

API deprecation

Developer note: Additional API deprecation advisories and guidance have been added in each of the 0.41.X releases. Please build your application with the latest 0.41.X release and carefully review the deprecation warnings reported and associated suggestions. Changes to applications may be required for compatibility with future versions of ServiceTalk beyond the API compatible 0.41.X series. While there are many deprecations for planned future API changes, most applications should require few changes as the most significant changes are to internal or specialized APIs. If you have concerns or expect problems related to any of the API deprecations please report these as an issue.

Bug fixes

Improvements

Build/Release/Github actions

Dependency upgrades


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

  • @bondolo
  • @chemicL
  • @tkountis
  • @Scottmitch
  • @idelpivnitskiy
servicetalk - 0.41.9

Published by tkountis almost 3 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

API deprecation

Developer note: Additional API deprecation advisories and guidance have been added in each of the 0.41.X releases. Please build your application with the latest 0.41.X release and carefully review the deprecation warnings reported and associated suggestions. Changes to applications may be required for compatibility with future versions of ServiceTalk beyond the API compatible 0.41.X series. While there are many deprecations for planned future API changes, most applications should require few changes as the most significant changes are to internal or specialized APIs. If you have concerns or expect problems related to any of the API deprecations please report these as an issue.

Bug fixes

Improvements

Build/Release/Github actions


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

  • @cancecen
  • @madrob
  • @bondolo
  • @chemicL
  • @tkountis
  • @Scottmitch
  • @rnett
  • @idelpivnitskiy
servicetalk - 0.41.8

Published by idelpivnitskiy about 3 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

API deprecation

Developer note: Additional API deprecation advisories and guidance have been added in each of the 0.41.X releases. Please build your application with the latest 0.41.X release and carefully review the deprecation warnings reported and associated suggestions. Changes to applications may be required for compatibility with future versions of ServiceTalk beyond the API compatible 0.41.X series. While there are many deprecations for planned future API changes, most applications should require few changes as the most significant changes are to internal or specialized APIs. If you have concerns or expect problems related to any of the API deprecations please report these as an issue.

  • https://github.com/apple/servicetalk/commit/f249032a4009f321ac9316187e5807d65b38b815 - Untangling GrpcClientBuilder from SingleAddressHttpClientBuilder (#1867) (#1882)
    • Introduce a GrpcClientBuilder.HttpInitializer interface and a corresponding GrpcClientBuilder#initializeHttp method which accepts the initializer for the underlying SingleAddressHttpClientBuilder;
    • Deprecate GrpcClientBuilder methods which have only served the purpose of delegating to the underlying HTTP client builder;
  • https://github.com/apple/servicetalk/commit/f8aaa8dd5cb1d72bb3f342d3293eb4beb1b036b7 - Untangling GrpcServerBuilder from HttpServerBuilder (#1861)
    • Introduce a GrpcServerBuilder.HttpInitializer interface and a corresponding GrpcServerBuilder#initializeHttp method which accepts the initializer for the underlying HttpServerBuilder;
    • Deprecate GrpcServerBuilder methods which have only served the purpose of delegating to the underlying HTTP server builder;

Improvements

Build/Release/Github actions

Dependency upgrades

Dependency upgrades for tests


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

  • @bondolo
  • @chemicL
  • @idelpivnitskiy
  • @Scottmitch
  • @tkountis
servicetalk - 0.41.7

Published by idelpivnitskiy about 3 years ago

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

New features

API deprecation

Developer note: Additional API deprecation advisories and guidance has been added in each of the 0.41.X releases. Please build your application with the latest 0.41.X release and carefully review the deprecation warnings reported and associated suggestions. Changes to applications may be required for compatibility with future versions of ServiceTalk beyond the API compatible 0.41.X series. While there are many deprecations for planned future API changes, most applications should require few changes as the most significant changes are to internal or specialized APIs. If you have concerns or expect problems related to any of the API deprecations please report these as an issue.

  • Combination of #1831 and #1852 deprecates the following:
    • LoadBalancerFactory#newLoadBalancer(Publisher, ConnectionFactory) in favor of a new method: LoadBalancerFactory#newLoadBalancer(String, Publisher, ConnectionFactory);
    • Second argument changed from Publisher<ServiceDiscovererEvent> to Publisher<Collection<ServiceDiscovererEvent>> to be aligned with ServiceDiscoverer API;
  • https://github.com/apple/servicetalk/commit/349df1e316a52de037b90b5211182bf6ca9f19d2 - Support proxy for MultiAddressHttpClientBuilder and for clients using already resolved address (#1751):
    • Deprecated HttpClients.*viaProxy(...) methods in favor of SingleAddressHttpClientBuilder#proxyAddress(...) method that allows configuring proxy at the builder;
  • https://github.com/apple/servicetalk/commit/5cc648ce387279ac4f59375ebe56c026d6146572 - Enhance RedirectingHttpRequesterFilter: redirect headers and message body (#1792)
    • Deprecated unnecessary constructors on RedirectingHttpRequesterFilter in favor of a new RedirectingHttpRequesterFilter(RedirectConfig);
    • Deprecated MultiAddressHttpClientBuilder#maxRedirects(int) in favor of a new MultiAddressHttpClientBuilder#followRedirects(RedirectConfig);

Bug fixes

Improvements

Improvements for tests

Build/Release/Github actions

Dependency upgrades

Documentation


Thank you

Every idea, review, and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

  • @bondolo
  • @chemicL
  • @idelpivnitskiy
  • @rnett
  • @Scottmitch
  • @tkountis
Package Rankings
Top 8.42% on Repo1.maven.org