Releases: apple/servicetalk
0.42.60
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
- 54f6e9a - opentelemetry-http: normalize keys to lower case when getting headers (#3335)
 - 1feda16 - opentelemetry-http: add the 'Physical ' prefix to grpc spans (#3332)
 - d1d8a3a - opentelemetry-http: append 'Physical ' to physical span names (#3328)
 - 997dd68 - opentelemetry-http: make filters stackable (#3324)
 
Bug Fixes
- 2336f3f - Avoid deadlock for 
subscribeOn()in case of unexpected exception (#3331) - 103b092 - opentelemetry-http: Properly extract host and port from authority header (#3336)
 
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 any unintended omission.
Author: Bryce Anderson [email protected]
Author: Idel Pivnitskiy [email protected]
Author: Michael Nitschinger [email protected]
0.42.59
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
- d273d37 - Always return 
DomainSocketAddressfor Unix Domain Socket transport (#3309)- In previous releases, users of Unix Domain Socket transport could see that 
ServerContextandConnectionInfomay returnio.netty.channel.unix.DomainSocketAddresstype instead ofio.servicetalk.transport.api.DomainSocketAddressthey used to bootstrap client or server. In this release, we corrected to always returnio.servicetalk.transport.api.DomainSocketAddresstype consistently from all public API. 
 - In previous releases, users of Unix Domain Socket transport could see that 
 
API deprecations
- d699fb0 - opentelemetry-http: consolidate filter parameters into OTEL filter builders (#3317)
OpenTelemetryOptionsand all public constructors ofOpenTelemetryHttpRequesterFilterandOpenTelemetryHttpServiceFilterare deprecated now, users should use corresponding builders:OpenTelemetryHttpRequesterFilter.BuilderandOpenTelemetryHttpServiceFilter.Builderto configure their filters.
 - ec66fa9 - Deprecate 
DomainSocketAddress.getPath()in favor ofpath()(#3323)- Deprecate 
DomainSocketAddress.getPath()and introduceDomainSocketAddress.path()instead. 
 - Deprecate 
 - 4177cd1 - Deprecate 
NettyServerContext.wrap(NettyServerContext, AsyncCloseable)(#3310)- This is an internal API that is not used by ServiceTalk anymore and will be removed in future releases.
 - Reminder: Users should not depend on any classes or interfaces from 
internalmodules and packages. 
 
New Features
- 589063d - gRPC protocol support in opentelemetry module (#3296)
 - d941935 - Propagate HTTP/2 streamId to request context (#3311)
 - 79d3e8b - loadbalancer: support maintaining a minimum connection pool size per host (#3303)
 
Bug Fixes
- 74d9321 - traffic-resilience-http: Consider the request body for ticket lifetimes (#3305)
 - 045b7e9 - opentelemetry-http: 
HttpAttributesGettershould always try to extract network attributes (#3315) - 923d669 - tcp-netty-internal: copy maps in copy contructors (#3320)
 
Improvements
- 3a82fc6 - opentelemetry-http: refactors in preparation for grpc support (#3306)
 - ae39a1e - grpc-utils: don't log null throwable (#3316)
 - 686607d - Don't apply SO_KEEPALIVE socket option for Unix Domain Sockets transport (#3307)
 - 3ec48fd - loadbalancer: reduce unnecessary null validation (#3325)
 
Dependencies
Documentation
- 436db6d - Improve javadoc for observers (#3304)
 - 2f4a7d8 - Replace references to noOffloadsStrategy with offloadNone (#3314)
 
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.
@aleqi200
@bryce-anderson
@daschl
@eddie4941
@idelpivnitskiy
@mgodave
0.42.58
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
API deprecations
- 59cfddb - concurrent-api: no more set context on subscribe (#3275)
setContextOnSubscribe(ContextMapoperator is deprecated forCompletable,Single, andPublisher. Instead, users should useshareContextOnSubscribe()operator to share context propagation between boundaries of async operators anddeferto create new async boundaries if it's necessary to isolate the context state for part of the user's Reactive Streams pipeline.
 
New Features
- c37d03a - Add 
ConnectionInfo.connectionId()(#3295) - 89d2c7f - Add 
HttpContextKeys.HTTP_ROUTEto propagatehttp.routeattribute (#3293) 
Improvements
- ebe7c52 - concurrent-api: improve context wrapping (#3276)
 - 3ba2402 - opentelemetry-http: defer client attribute extraction (#3284)
 - fa2bd59 - loadbalancer: improve logging of XdsHealthIndicator (#3285)
 - f3424ce - loadbalancer: fix subsetting log (#3291)
 - f42389c - 
TransportObserver: let users skip uninterested callbacks (#3297) - a195a5a - 
[Http|Grpc]LifecycleObserver: let users skip uninterested callbacks (#3299) 
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.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) ->OpenTelemetryHttpRequesterFilterOpenTelemetryHttpServerFilter(deprecated) ->OpenTelemetryHttpServiceFilter
 - 6acde6c - Change 
[Early|Late]ConnectionAcceptorAPI to acceptConnectionContext(#3273)- Users of 
EarlyConnectionAcceptorandLateConnectionAcceptorshould implementaccept(ConnectionContext)method instead ofaccept(ConnectionInfo). Implementation ofaccept(ConnectionInfo)can simply throwUnsupportedOperationException. In the next major version, we will flipdefaultmethod 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 
VaryHTTP 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-bomdependency (#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 
CapturedContextmechanism 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=falseto 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 
CapturedContextAPI'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 
AsyncContextthrough entire request-response exchange (#3221) - 95820db - Fix 
AsyncContextpropagation through connection acceptors chain (#3223) - 6b538e9 - 
DefaultNettyConnection: shareAsyncContextstate 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 
discardEventsAfterCancelwhen 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-protobuftransitively (#3227)- Users don't need to add 
servicetalk-grpc-protobufdependency explicitly to compile generated stubs if they already haveservicetalk-grpc-protocon 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 
RejectedSubscribeExceptionif 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 
AbstractNoHandleSubscribesources (#3193) - e0d6fc6 - Make all async sources subscribable (#3192)
 - 8545083 - 
SourceAdaptersshould convert back and forth without allocation (#3196) - 8fa5aab - Align 
HttpRequester/StreamingHttpRequesterwith 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 
apitoimplementation. 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 
DefaultLoadBalancerout of experimental (#3136) - 68055fa - http-netty: let 
RetryingHttpRequesterFilterreturn 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-instrumentationmodules 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 
apidependencies or move them to lower scope (#3169) - e87371c - Remove unused 
implementationdependencies or move them toruntime(#3168) - cb6fd6c - Promote dependencies to 
apiwhere 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 
skipDeprecatedto the protoc code generator to avoid generating deprecated code (#3089) - 7a05d7d - Add 
Single/Completablesubscribeoverloads that can also handle failures (#3112) 
Bug Fixes
- f783e7d - 
Publisher#flatMapConcatIterablemay skip emitting items (#3108) - 158d4c3 - Reset flush strategy after client request is written (#3103)
 - d7dd886 - Server-side 
AsyncContextinitialized 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 - 
TcpServerBinderlogs "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: fixCLOSEDmarker instance (#3086) - 8fd62da - Detect unexpected response leaks for multi-address client instances (#3096)
 - 275623c - Preserve default 
Http2SettingswhenHttp2SettingsBuilderis 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