Skip to content

0.42.56

Choose a tag to compare

@daschl daschl released this 25 Apr 09:08
· 108 commits to main since this release
88a27d1

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