Skip to content

Releases: apple/servicetalk

0.42.57

06 Jun 16:34
315eab8
Compare
Choose a tag to compare

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.

Changes

Behavior Changes

  • 7b0c2f5 - loadbalancer: insert connections to host in random order to increase entropy in connection selection (#3266)
  • bbe8d89 - opentelemetry-http: make span status extraction conform to semconv (#3255)

API deprecations

  • d8dd5ea - opentelemetry-http: Rename OTEL filters and deprecate old class names (#3256)
    • OpenTelemetryHttpRequestFilter (deprecated) -> OpenTelemetryHttpRequesterFilter
    • OpenTelemetryHttpServerFilter (deprecated) -> OpenTelemetryHttpServiceFilter
  • 6acde6c - Change [Early|Late]ConnectionAcceptor API to accept ConnectionContext (#3273)
    • Users of EarlyConnectionAcceptor and LateConnectionAcceptor should implement accept(ConnectionContext) method instead of accept(ConnectionInfo). Implementation of accept(ConnectionInfo) can simply throw UnsupportedOperationException. In the next major version, we will flip default method implementation from new to old method and users will be able to get rid of accept(ConnectionInfo) implementation in their code.

Bug Fixes

  • a5a6ee0 - opentelemetry-http: fix url extraction (#3274)
  • 2201844 - Tighten usage of Vary HTTP header (#3277)
  • 3468276 - tcp-netty-internal: Make sure context information is available to ConnectionObserver (#3257)
  • 1f64e6e - transport-netty-internal: properly order observer events if connection establishment fails (#3238)
  • b794a5d - log4j-mdc: add missing log4j-bom dependency (#3261)

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 any unintended omission.

@bryce-anderson
@idelpivnitskiy
@daschl
@mgodave

0.42.56

25 Apr 09:08
88a27d1
Compare
Choose a tag to compare

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 most notable change is in how ServiceTalk propagates context of MDC and OpenTelemetry. We now offer the CapturedContext abstraction which lets ServiceTalk use the native context storage mechanisms of 3rd party libraries. We're now using this mechanism for both MDC and OpenTelemetry. See the Behavior Changes section for more details.

Changes

Behavior Changes

  • 19acad2 - log4j-mdc: Use CapturedContext mechanism for MDC to get copy behavior (#3244)
    • This preserves the expected thread-local behavior of MDC while still correctly propagating it throughout the ServiceTalk framework. If you encountered any issues with new behavior, use the temporarily introduced system property io.servicetalk.log4j2.mdc.utils.useCapturedContextStorage=false to opt-out and report any issues back to us.
  • ed57e90 - opentelemetry: use the new context propagation mechanism (#3199)
    • The new propagation mechanism doesn't require changing how OTEL stores context, instead capturing the context from the OTEL native storage location and properly restoring it throughout the ServiceTalk stack. This fixes a number of correctness issues with ServiceTalk propagation as well improving compatibility with other libraries using OpenTelemetry.

New Features

  • fc68f89 - concurrent-api: Make the CapturedContext API's public (#3203)
  • e0858da - concurrent-api: add CapturedContextProvider.captureContextCopy() method (#3233)
  • aad031e - http-utils: add AfterFinallyHttpOperator (#3231)

Bug Fixes

  • 6777633 - Server-side doesn't share AsyncContext through entire request-response exchange (#3221)
  • 95820db - Fix AsyncContext propagation through connection acceptors chain (#3223)
  • 6b538e9 - DefaultNettyConnection: share AsyncContext state on write (#3218)
  • 67331d1 - http-netty: Properly drain request body if response body fails (#3224)
  • f1e4b36 - opentelemetry-http: Set context correctly for the server request body (#3212)

Improvements

  • 62d7db7 - Make unexpected gRPC exceptions visible on the server-side (#3235)
  • 82bdbb7 - Share context inside Publisher.onErrorReturn / Single.onErrorReturn (#3216)
  • e770156 - Don't use discardEventsAfterCancel when not necessary (#3237)

Dependencies

  • 86c9fe9 - Upgrade Netty 4.1.119 -> 4.1.121 (#3248)
  • 388f0f9 - opentelemetry-http: upgrade to otel-api 1.48 and otel-instrumentation 2.14 (#3215)
  • be6e417 - Make incubator io_uring transport a compileOnly dependency (#3226)
    • Users who still want to try it with Netty 4.1.x, will need to add these dependencies manually before activating the system property: -Dio.servicetalk.transport.netty.tryIoUring=true.
  • ded0677 - servicetalk-grpc-protoc: add servicetalk-grpc-protobuf transitively (#3227)
    • Users don't need to add servicetalk-grpc-protobuf dependency explicitly to compile generated stubs if they already have servicetalk-grpc-protoc on the classpath.

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.

@bryce-anderson
@daschl
@idelpivnitskiy
@mgodave

0.42.55

21 Mar 23:42
227ff59
Compare
Choose a tag to compare

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.

Changes

Behavior Changes

  • 0eb0818 - Mark Publisher.subscribeInternal(Subscriber) method as final (#3194)
    • This internal method was non-final by omission. We expect that nobody uses it.
  • 7a7341a - Prevent concurrent execution of the same mutable request object (#3197)
    • The change may unexpectedly break existing use cases by throwing RejectedSubscribeException if users reuse mutable HTTP or gRPC requests concurrently. Those users must adjust their code asap to avoid doing that. To buy some time, they can use a temporarily introduced system property to opt-out from this validation: -Dio.servicetalk.http.netty.skipConcurrentRequestCheck=true.

New Features

  • 4f4b204 - Add Publisher.firstAndTail(...) operator (#3186)
  • a1d611d - loadbalancer: surface random subsetting behavior in the LoadBalancerBuilder API (#3205)

Bug Fixes

  • fa48ce4 - concurrent-api: defer logging during CapturedContextProviders initialization (#3202)

Improvements

  • 1af323e - http-utils: Fix bad logging when request and response are present (#3191)
  • 2a09aa2 - Update exception messages from AbstractNoHandleSubscribe sources (#3193)
  • e0d6fc6 - Make all async sources subscribable (#3192)
  • 8545083 - SourceAdapters should convert back and forth without allocation (#3196)
  • 8fa5aab - Align HttpRequester/StreamingHttpRequester with blocking variants (#3201)
  • 31c9c7a - log4j2-mdc: Use SPI instead of log4j-provider.properties (#3204, #3208, #3209)
  • 9a908ef - Increase visibility for unexpected HTTP/2 errors on the server-side (#3206)
  • 31eec9a - loadbalancer: add some logging to RandomSubsetter (#3207)

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 any unintended omission.

@bryce-anderson
@chrisvest
@daschl
@idelpivnitskiy
@mgodave
@normanmaurer

0.42.54

12 Feb 16:56
a47a9c8
Compare
Choose a tag to compare

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.

Changes

Improvements

  • f0851de - concurrent-api: make context capture more generic (#3183)
  • b625ab7 - concurrent-api: shave some allocations from new Scope (#3185)
  • c6d55e2 - concurrent-api: cleanup AsyncContext operations (#3181)
  • a7e83b4 - Log runtime values for NativeTransportUtils (#3180)

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 any unintended omission.

@bryce-anderson
@chrisvest
@daschl
@idelpivnitskiy
@mgodave

0.42.53

15 Jan 23:14
a75950e
Compare
Choose a tag to compare

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.

Changes

Behavior Changes

  • 85fd41b - Do not cancel subscription on BlockingIterable#hasNext(long, TimeUnit) (#3128, #3154)
    • BlockingIterable#hasNext(long, TimeUnit) no longer cancels the subscription if the operation times out. This makes it consistent with the behavior of java.util.concurrent.Future.get(long, TimeUnit) and helps to preserve the stream for future use. However, this could result in resource leaks if the stream is not closed. We recommend using the try-with-resources pattern with blocking API's to avoid leaks.
  • We've started using the dependency analysis plugin (#3158) which highlighted a number of dependency cleanups we could do. Some of those involved lowering dependency scope from api to implementation. Those shouldn't affect most users but in limited cases you may have been inadvertently getting a compile time dependency on a module transiently that didn't belong. In those cases you'll need to include the relevant module in your build.

API Deprecations

  • 6fc7987 - loadbalancer: deprecate RoundRobinLoadBalancer types (#3149)

New Features

  • e4d4418 - loadbalancer: move DefaultLoadBalancer out of experimental (#3136)
  • 68055fa - http-netty: let RetryingHttpRequesterFilter return responses on failure (#3048)
  • 1bcf8ea - [grpc-protoc] Add an option to generate default service methods (#3110)

Bug Fixes

  • 2dfacd1 - gRPC Trailers-Only responses must be a single HEADERS frame (#3152)

Improvements

  • 569323f - Adding remote info to logger message so clients can be tracked down (#3155)
  • f570fdb - BlockingStreamingHttpService: drop trailers if users didn't create any (#3151)

Dependencies

  • ad2bbbb, 3fbc367 - Update Netty 4.1.115 -> 4.1.117 (#3141, #3172)
  • 135a994 - Update Netty io_uring 0.0.25 -> 0.0.26 (#3157)
  • 8951931 - Update OpenTelemetry 1.28.0 -> 1.38.0, instrumentation 1.28.0 -> 1.33.3 (#3161)
    • Notably, some of the opentelemetry-instrumentation modules contained breaking API changes that may cause incompatibilities.
  • a19a930 - Update Jersey for Jakarta EE 9 3.0.13 -> 3.0.17
  • 5277958 - Update Jersey for Jakarta EE 10 3.1.6 -> 3.1.9

Dependencies Scope Changes

  • 46d56ea - Remove unused api dependencies or move them to lower scope (#3169)
  • e87371c - Remove unused implementation dependencies or move them to runtime (#3168)
  • cb6fd6c - Promote dependencies to api where necessary (#3167)
  • 373299a - Explicitly declare transitive dependencies that we use directly (#3164)

Documentation

  • c750d92 - docs: incorporate default load balancer docs into the main site (#3153)
  • 673e4d9 - Add logo, favicon and footer copy (#3116)

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.

@bryce-anderson
@chrisvest
@colestanfield
@mgodave
@federicobucchi
@idelpivnitskiy
@daschl

0.42.52

19 Nov 14:04
c18a104
Compare
Choose a tag to compare

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.

Changes

New Features

  • f8abe11 - Add option skipDeprecated to the protoc code generator to avoid generating deprecated code (#3089)
  • 7a05d7d - Add Single/Completable subscribe overloads that can also handle failures (#3112)

Bug Fixes

  • f783e7d - Publisher#flatMapConcatIterable may skip emitting items (#3108)
  • 158d4c3 - Reset flush strategy after client request is written (#3103)
  • d7dd886 - Server-side AsyncContext initialized in lifecycle observer is lost (#3111)
  • 4187c05 - Discard new writes without closing connection on AbortWritesEvent (#3102)

Improvements

  • 8d30706 - Preserve full request context while redirecting (#3104)
  • 38cc84b - RedirectSingle: avoid extra operator for exception handling path (#3114)
  • 057cc56 - capacity-limiter-api: observe all gradient limit changes (#3107)
  • c14e4aa - TcpServerBinder logs "Failed to create a connection" twice (#3113)

Dependencies

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 any unintended omission.

@bryce-anderson
@mgodave
@idelpivnitskiy
@daschl
@Scottmitch
@tkountis

0.42.51

14 Nov 06:55
5d187f7
Compare
Choose a tag to compare

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.

Changes

New Features

  • 8441a20 - traffic-resilience-http: Add dry-run mode for resilience filters (#3085, #3091)

Bug Fixes

  • eebe458 - Fix response leak that can be caused by an exception during redirect (#3095)

Improvements

  • 99371cf - CloseableIteratorBufferAsInputStream: fix CLOSED marker instance (#3086)
  • 8fd62da - Detect unexpected response leaks for multi-address client instances (#3096)
  • 275623c - Preserve default Http2Settings when Http2SettingsBuilder is used (#3092)

Documentation

  • ec8ea4c - traffic-resilience-http: Add documentation for capacity limiters (#3082, #3098)
  • 681cf76 - LifecycleObserver examples: clarify server-side ordering options (#3087)
  • d282dcc - HelloWorldJaxRsResource: fix method name (#3094)

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.

@bryce-anderson
@chrisvest
@daschl
@idelpivnitskiy
@mgodave
@tkountis

0.42.50

15 Oct 08:39
140ccb5
Compare
Choose a tag to compare

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.

Changes

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 any unintended omission.

@bryce-anderson
@daschl
@idelpivnitskiy

0.42.49

04 Oct 18:07
906f37c
Compare
Choose a tag to compare

⚠️ This release has an issue with generated pom.xml files that does not let Maven to import all transitive dependencies correctly. Please upgrade to 0.42.50.

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.

Changes

New Features

  • 94c1bbb - Add SslConfig to ConnectionObserver.onSecurityHandshake (#3074)
    • Deprecated ConnectionObserver.onSecurityHandshake(), use new ConnectionObserver.onSecurityHandshake(SslConfig) instead.
  • 6613bd5 - Add experimental system properties for Netty DnsNameResolver (#3073)
    • io.servicetalk.dns.discovery.netty.experimental.tcpFallbackOnTimeout (default: false) - enables fallback to TCP protocol if UDP query failed with timeout exception;
    • io.servicetalk.dns.discovery.netty.experimental.datagramChannelStrategy (default: ChannelPerResolver) - use ChannelPerResolution to force Netty to create a new UDP channel on every resolution.

Bug Fixes

  • 004983e - HttpRequestMetaData#hasQueryParameter(String) implementaiton fix (#3058)
  • ab4e9b2 - HttpRequestMetaData#hasQueryParameter(String) default implementation fix (#3061)
  • 19d0907 - tcp-netty-internal: fix race in TcpConnector (#3069)
  • a3a4212 - Use invoke for SslContextBuilder#endpointIdentificationAlgorithm(String) (#3072)

Improvements

  • 249efc7 - concurrent-api: save the timestamp of the SingleToFuture.get() calls (#3051)
  • 34a0849 - Allow null value for query parameter setter methods (#3059)

Experimental loadbalancer changes

  • a75232b - loadbalancer-experimental: make DefaultLoadBalancer the default RR implementation (#3065)
  • 57f8454 - loadbalancer-experimental: don't always pay for EWMA with noop detector (#3057)
  • a5b42a0 - loadbalancer-experimental: Add support for randomly subsetting hosts (#3062)

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 any unintended omission.

@bryce-anderson
@daschl
@idelpivnitskiy
@Scottmitch

0.42.48

27 Aug 12:04
16af216
Compare
Choose a tag to compare

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.

Changes

Bug Fixes

  • 9f68119 - Encode/Decode grpc-message status per spec (#3023)
  • 372f108 - http-utils: cleanup the BeforeFinallyHttpOperator state (#3042)
  • 44a5b80 - http-netty: fix JavaNetSoTimeoutHttpConnectionFilter leak (#3043)
  • ed0265c - ConnectablePayloadWriter: avoid static exception that may leak memory (#3047)
  • f345761 - SpliceFlatStreamToMetaSingle: propagate cancel when races with data (#3036)
  • 2316f7c - Amb operators for Single and Completable should respect reactive contract 2.3 (#3040)
  • d09421a - http-utils: fix leak in AbstractTimeoutHttpFilter (#3038)
  • 0537138 - http-utils: fix leak in BeforeFinallyHttpOperator (#3034)

Improvements

  • 4d9ab77 - Add TransportConfig to control low level transport settings (#3041)
  • edb05b5 - Single.repeat: use TerminateRepeatException as a terminal marker (#3045)
  • 8074930 - Subscribable sources: try-catch onSubscribe and cleanup state if any (#3046)
  • 2f2bf85 - Improve CancellationException (#3039)
  • 893a156 - capacity-limiter-api: avoid division in EMA (#3030)
  • 4e7d64e - capacity-limiter-api: make AimdCapacityLimiter use ReentrantLock (#3025)
  • 1c2afec - Remove some uses of synchronized (#3024)

Experimental loadbalancer changes

  • 6b3a09f - loadbalancer-experimental: reduce dogpiling on hosts after healthy hosts (#3021)

Dependencies

Documentation

  • 977ac05 - Improve Single (+Completable) amb* documentation (#3044)
  • 21c0a74 - Properly drain failed responses in http-service-composition example (#3026)
  • 52d68b0 - capacity-limiter-api: polish javadocs and minor code modifications (#3031)

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.

@bryce-anderson
@daschl
@idelpivnitskiy