Releases: apple/servicetalk
0.42.57
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 acceptConnectionContext
(#3273)- Users of
EarlyConnectionAcceptor
andLateConnectionAcceptor
should implementaccept(ConnectionContext)
method instead ofaccept(ConnectionInfo)
. Implementation ofaccept(ConnectionInfo)
can simply throwUnsupportedOperationException
. In the next major version, we will flipdefault
method implementation from new to old method and users will be able to get rid ofaccept(ConnectionInfo)
implementation in their code.
- Users of
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.
0.42.56
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.
- 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
- 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
: shareAsyncContext
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
.
- Users who still want to try it with Netty 4.1.x, will need to add these dependencies manually before activating the system property:
- ded0677 -
servicetalk-grpc-protoc
: addservicetalk-grpc-protobuf
transitively (#3227)- Users don't need to add
servicetalk-grpc-protobuf
dependency explicitly to compile generated stubs if they already haveservicetalk-grpc-protoc
on the classpath.
- Users don't need to add
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.
0.42.55
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
.
- The change may unexpectedly break existing use cases by throwing
New Features
- 4f4b204 - Add
Publisher.firstAndTail(...)
operator (#3186) - a1d611d - loadbalancer: surface random subsetting behavior in the LoadBalancerBuilder API (#3205)
Bug Fixes
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
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
- d80c3f1 - Update Netty 4.1.117.Final -> 4.1.118.Final (#3188)
- add4396 - Upgrade protobuf 3.25.3 -> 3.25.5 (#3179)
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.
0.42.53
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 ofjava.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
toimplementation
. 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)
- Users should plan migration to the new LoadBalancer API (#3136). For more information, see documentation and examples.
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
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.
- Notably, some of the
- 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 toruntime
(#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
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
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
Bug Fixes
Improvements
- 99371cf -
CloseableIteratorBufferAsInputStream
: fixCLOSED
marker instance (#3086) - 8fd62da - Detect unexpected response leaks for multi-address client instances (#3096)
- 275623c - Preserve default
Http2Settings
whenHttp2SettingsBuilder
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
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
- fe7739e - Correct netty dependencies (#3078)
- 412460f - Correct log4j dependencies (#3080)
- 16d49bc - Remove unused dependencies from
servicetalk-transport-netty
(#3079)
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.
0.42.49
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
toConnectionObserver.onSecurityHandshake
(#3074)- Deprecated
ConnectionObserver.onSecurityHandshake()
, use newConnectionObserver.onSecurityHandshake(SslConfig)
instead.
- Deprecated
- 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
) - useChannelPerResolution
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
forSslContextBuilder#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
- 892e613 - Update Netty 4.1.112 -> 4.1.114 (#3054, #3071)
- 9e310cc - Stop using
servicetalk-dependencies
internally (#3055)
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.
0.42.48
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 forSingle
andCompletable
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
: useTerminateRepeatException
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
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.