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.