Skip to content

Releases: apple/servicetalk

0.42.44

15 May 19:53
73d6518
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

  • a65238c - Support Jersey 3 and Jakarta EE 9/10 (#2919)
  • baac8d6 - Introduce traffic resiliency features (#2911)
  • 7919d3a - RetryingHttpRequesterFilter: add on request retry callback (#2916)

Improvements

  • c85a8f4 - DnsServiceDiscoverer: add total resolution timeout (#2908)

Experimental loadbalancer changes

  • f0e7aff - loadbalancer-experimental: adjust load balancer policy docs and helpers (#2926)
  • a75d9fa - loadbalancer-experimental-provider: use System.getProperty(...) directly (#2922)
  • 6f12039 - loadbalancer-experimental: add flag to use DefaultLoadBalancer in place of RoundRobinLoadBalancer (#2913)
  • 2b55150 - loadbalancer-experimental: add a ServiceDiscovererEvent to carry weight and priority (#2907)
  • 53f9f35 - loadbalancer-experimental: add provider for enabling DefaultLoadBalancer (#2900)
  • 8f096da - loadbalancer-experimental: add weight support for P2C selection (#2892)
  • f1e39d7 - loadbalancer-experimental: add support for weights in round robin (#2909)
  • d02f866 - loadbalancer-experimental: add support for prioritization (#2905)

Documentation

  • e965d5a - client-api: add an example of how to use the ServiceDiscoverer API (#2903)

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.

@blake-bauman
@bryce-anderson
@chrisvest
@daschl
@idelpivnitskiy
@tkountis

0.42.43

17 Apr 18:48
e9cbcbd
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

  • fc8b1df - Add support for Optional TLS negotiation for http/1 and http/2 (#2871)

Behavior Changes

  • cbefaa9 - Lower initial delay for ServiceDiscovery retries from 8 to 2 seconds (#2891)
  • cc2cdfa - Lower max delay for ServiceDiscovery retries from 256 to 128 seconds (#2895)

Improvements

  • 5771163 - Always log registered ServiceLoader providers at INFO level (#2880)
  • e605c87 - Handle DNS SERVFAIL differently than NXDOMAIN (#2776)

Bug Fixes

  • dabaabc - Fix Content-Length header removal after content compression (#2863)
  • d4012e6 - http-netty: Properly set the host header for MultiAddressUrlClient (#2868)

Experimental loadbalancer changes

  • 9b1a8a6 - loadbalancer-experimental: Rename HealthChecker to OutlierDetector (#2860)
  • acdf203 - loadbalancer-experimental: Remove type param from LoadBalancerObserver (#2866)
  • 7c0815c - loadbalancer-experimental: remove the generic load balancer factory methods (#2865)
  • ad90616 - examples: add an example of using DefaultLoadBalancer (#2855)
  • 023e635 - experimental-loadbalancer: remove 'healthChecker' names (#2873)
  • 08f2c43 - loadbalancer-experimental: centralize LoadBalancingPolicy fail open default setting (#2872)
  • 1f31e61 - loadbalancer-experimental: consolidate outlier detector concerns into the OutlierDetectorConfig (#2864)
  • 71b5fa6 - loadbalancer-experimental: make connection selection strategy modular (#2815)
  • 1aafb7a - loadbalancer-experimental: tighten up load balancing policy (#2884)
  • aacc5b9 - grpc-netty: add RequestTracker support to grpc (#2885)

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
@chrisvest
@daschl
@idelpivnitskiy
@mgodave
@Scottmitch
@tkountis

0.42.42

23 Feb 23:17
da1b7e3
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

  • 6f6c9e5 - Add DelegatingServiceDiscoverer to client-api (#2842)
  • bf64643 - Add HttpClients.forMultiAddressUrl() overload with ServiceDiscoverer (#2843)
  • 0af167a - Expose global A/AAAA and SRV DNS ServiceDiscoverer instances (#2844)

Experimental loadbalancer changes

  • f3635b1 - loadbalancer: Add an xDS compatible HealthChecker implementation (#2809)
  • 11c5a3d - LoadBalancer wire the tracker on the host layers with the request flow (#2816)
  • fb39471 - loadbalancer-experimental: track the length of outstanding requests (#2833)
  • 954c147 - loadbalancer: move DefaultLoadBalancer to its own experimental module (#2819)
  • d2794c4 - loadbalancer-experimental: Add some documentation for DefaultLoadBalancer (#2837)

Dependencies

  • 3a652dd - Update Netty 4.1.106 -> 4.1.107 (#2834)
  • 612b080 - Update netty-incubator-transport-native-io_uring 0.0.24 -> 0.0.25 (#2840)
  • e80d853 - Update protobuf 3.23.2 -> 3.25.1 (#2846)
  • e67bf6e - Update log4j 2.20.0 -> 2.22.1
  • e269d36 - Update jctools 4.0.1 -> 4.0.3
  • b23bcaa - Update Jackson 2.15.2 -> 2.15.4
  • 1a916e5 - Update zipkin-reporter 2.16.4 -> 2.17.2
  • 12190dd - Update proto-google-common-protos 2.21.0 -> 2.29.0

Documentation

  • de5278d - Clarify ConnectionObserver callbacks contract (#2838)
  • c17a0f6 - Clarify lifecycle of global Executors (#2845)

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
@Scottmitch
@tkountis

0.42.41

20 Jan 00:05
15d8a5f
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

Bug Fixes

  • 904ed6f - h2: disable auto read for stream channels (#2799)

Improvements

  • aeca73c - Add validation for H1ProtocolConfigBuilder setters (#2792)

Experimental loadbalancer changes

  • 00e740c - loadbalancer: Add the ErrorClass enum and use it in RequestTracker (#2808)
  • 34db3ac - loadbalancer: introduce the HealthChecker interface (#2800)
  • 8a8e3ab - Latency tracking utilities to support LB L7 breakers (#2794)
  • cb8405d - loadbalancer: cleanup HostSelector List variance (#2795)
  • aac806c - loadbalancer: Simplify ConnectionFactory usage in DefaultHost (#2796)
  • 6b2b65e - loadbalancer: selectors consider health first and have configurable fail-open behavior (#2787)
  • e5784f8 - loadbalancer: fix NormalizedTimeSourceExecutor to work with units other than nanos (#2791)
  • e3daaf3 - loadbalancer: Some cleanups for DefaultHost (#2779)

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
@Scottmitch
@tkountis

0.42.40

14 Dec 23:37
9566dab
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

  • cf40cb3 - concurrent-api: fix IllegalArgumentExcetion for zero jitter in RetryStrategies (#2777)
  • 1d00f69 - Additional fix for IPv6-derived SNI hostnames (#2778)

Improvements

  • 3266749 - Disable RRLB health-checking for DiscoveryStrategy.ON_NEW_CONNECTION (#2772)
  • 112fb07 - mdc-utils: Make LoggerStringWriter thread friendly (#2771)

Experimental loadbalancer changes

  • 0fdbdd5 - loadbalancer: fix observer name pattern (#2783)
  • 82ad584 - loadbalancer: add an observer pattern to DefaultLoadBalancer (#2770)
  • bad9558 - loadbalancer: HostSelector can be rebuilt each time the DefaultLoadBalancer gets a host set update (#2774)
  • d288479 - loadbalancer: Change generics of LoadBalancerPolicy (#2773)
  • e3a10f8 - loadbalancer: Use a sequential execution concurrency model in DefaultLoadBalancer (#2768)
  • ad80596 - loadbalancer: add builder for the DefaultLoadBalancer (#2749)
  • 623c32a - loadbalancer: move health check related constants to the HealthCheck class (#2764)
  • 936e01b - loadbalancer: better asymptotic behavior of host updates (#2745)

Dependencies

  • 42e3b0b - Revert grpc-java back 1.59.1 -> 1.56.1 (#2784)
  • 4d30837 - Update Netty 4.1.101 -> 4.1.103 (#2782)
  • 90205ff - Bump dawidd6/action-download-artifact from 2.28.0 to 2.28.1 (#2781)

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
@Scottmitch
@tkountis

0.42.39

17 Nov 16:09
b8a3ecb
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

API Deprecations

  • 231ec64 - Fix incorrect name of decoderEnforceMaxRstFramesPerWindow property (#2740)
    • Deprecates mistakenly named io.servicetalk.http.netty.http2.decoderEnforceMaxRstFramesPerWindow.maxConsecutiveEmptyFrames=200 system property in favor of the correct naming: io.servicetalk.http.netty.http2.decoderEnforceMaxRstFramesPerWindow.maxRstFramesPerWindow=200
  • 40e20f5 - Add initializer API for headers of HTTP proxy CONNECT request (#2744)
    • Deprecates SingleAddressHttpClientBuilder.proxyAddress(Object) in favor of a new method SingleAddressHttpClientBuilder.proxyConfig(ProxyConfig)

New Features

  • 40e20f5 - Add initializer API for headers of HTTP proxy CONNECT request (#2744)

Bug Fixes

  • 7906cda - Fix bug in http/grpc logging observer that prevented request Throwables to be logged (#2759)
  • f2fbd46 - Mark HTTP/2 connection as closing on exception caught (#2686)

Improvements

  • ff33868 - Disable decoderEnforceMaxRstFramesPerWindow for HTTP/2 clients (#2752)
  • 99ea1c5 - ZipkinReporter: add trace logging for batching and encoded spans (#2739)
  • 877c4f7 - Enable Keep-Alive socket option by default (#2676)
  • 3649525 - Warn if response payloads are not drained properly (#2710)
  • 294de53 - Do not consume orphaned message bodies, just warn (#2733)

Dependencies

Documentation

  • 25b09db - Adjust servicetalk-examples-http-retry (#2746)
  • 5e711b4 - Improve javadocs for Publisher.firstOrElse(...) and Publisher.firstOrError()` (#2736)

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
@tflobbe
@tkountis

0.42.38

11 Oct 23:29
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

  • 07a41d5 - Move HTTP proxy CONNECT logic before ConnectionFactoryFilters (#2697)
    • Previously, it was possible to use ConnectionFactoryFilter(s) to intercept HTTP CONNECT requests to a proxy. In this release, CONNECT requests are handled internally and they are not visible to users. (#2711) adds ConnectionObserver.ProxyConnectObserver to observe such requests, but if you have a different use-case that is not covered anymore (like setting auth headers), let us know by opening an issue.
  • 66f838c - Add ConnectionObserver.ProxyConnectObserver (#2711)
    • The sequence of ConnectionObserver callbacks for proxy tunneled connections has changed in this release. Previously, those connections triggered connectionEstablished, then onSecurityHandshake, and were ready to serve traffic only after handshakeComplete callback. New behavior is that connections are always ready to serve traffic after either connectionEstablished or multiplexedConnectionEstablished callback is invoked.

API deprecations

  • a726670 - Deprecate HttpContextKeys.HTTP_TARGET_ADDRESS_BEHIND_PROXY (#2722)
    • This key was useful to distinguish the correct callback inside ConnectionObserver before reporting that a new connection is ready to take traffic. After (#2711) this is not necessary anymore because all connections are "ready" after "established" callback is invoked. Target address information will be provided via ConnectionObserver.onProxyConnect(...).
  • 1a65e86 - Improve exceptions thrown when an error happens during proxy CONNECT (#2721)
    • Deprecated io.servicetalk.http.netty.ProxyResponseException
    • Introduced io.servicetalk.http.api.ProxyConnectResponseException and io.servicetalk.http.api.ProxyConnectException instead
  • 4fb2ac1 - ConnectionObserver: provide ConnectionInfo on transport handshake (#2726)
    • Deprecated ConnectionObserver.onTransportHandshakeComplete()
    • Introduced ConnectionObserver.onTransportHandshakeComplete(ConnectionInfo) instead

New features

  • 055374e - Implement HTTP proxy CONNECT with ALPN (#2699)
    • Users can use either HTTP/1.1, HTTP/2, or gRPC protocol after establishing a secure tunnel through a proxy.
  • 6d38417 - Support proxy for plaintext HTTP/2 clients with prior-knowledge (#2716)
  • 66f838c - Add ConnectionObserver.ProxyConnectObserver (#2711)
  • 4fb2ac1 - ConnectionObserver: provide ConnectionInfo on transport handshake (#2726)
  • da1ea3b - Add Publisher.replay (#2684)
  • b576131 - Add Publisher.onCompleteError (#2723)
  • ec3c64a - Introduce tmp properties for Netty decoderEnforceMaxRstFramesPerWindow (#2728)
    • Netty version was upgraded to mitigate recently discovered "HTTP/2 Rapid Reset Attack" (CVE-2023-44487). While Netty added configuration options for netty-codec-http2 to control RST frames per time window, ServiceTalk introduced temporary system properties to let users change those options when they need to change the default values set by Netty:
      • -Dio.servicetalk.http.netty.http2.decoderEnforceMaxRstFramesPerWindow.maxConsecutiveEmptyFrames=200
      • -Dio.servicetalk.http.netty.http2.decoderEnforceMaxRstFramesPerWindow.secondsPerWindow=30

Bug Fixes

  • 4db1dab - TLS handshake failures are not reported to observers when ALPN is used (#2712)

Improvements

  • b1dda8c - Use ChannelCloseUtils in SniCompleteChannelSingle (#2714)
  • ee7db1e - Trigger channel read for TLS handshake only on the server-side (#2713)
  • 2aacf9e - Remove unnecessary proxyAddress from HttpClientBuildContext (#2720)
  • d8e55aa - Use Publisher.replay operator (#2700)
  • c92941c - ReplayStrategies.LazyTimeLimitedReplayAccumulator trims and accumulate (#2725)

Dependencies

Build/Release/Github actions


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
@Scottmitch
@tkountis

0.42.37

22 Sep 17:28
2ff9e87
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

  • 9bc9746 - Introduce defaultHttp(s)Port for MultiAddressHttpClientBuilder (#2703)
  • 9f0d920 - Add Publisher.switchMap (#2678)

Bug Fixes

  • 248df1c - HTTP/2 requests can be sent with incorrect :scheme pseudo-header (#2708)
  • 6b30d63 - CONNECT request to a proxy must include Host header (#2691)

Improvements

  • c9b1fc5 - ProtobufSerializer minimize getSerializedSize() usage (#2694)
  • 78d4050 - Calculate initial concurrency based on resulting connection protocol (#2693)
  • 6f9bdba - Drain proxy CONNECT response before starting TLS handshake (#2692)

Dependencies

  • 528a4ae - Update Netty 4.1.97 -> 4.1.98, netty-io_uring 0.0.21 -> 0.0.22 (#2706)

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
@daschl
@idelpivnitskiy
@mgodave
@Scottmitch
@sonicloong
@tkountis

0.42.36

31 Aug 16:15
77ca7f3
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

  • 9df2a86 - Map JsonMappingExceptions caused by a serializer to 500 responses (#2669)
  • 4837cd8 - Use semantic convention APIs for OpenTelemetry (#2662, #2680)

Bug Fixes

  • a121e7f - Publisher.multicast late subscriber cancel demand bug (#2683)
  • c1a7092 - Mark connection as closing on exception caught (#2675)
  • 28b7494 - Retry/repeat operators consistently not copy AsyncContext (#2670)
  • 02f67a6 - JavaNetSoTimeoutHttpConnectionFilter: handle zero and negative values (#2665)
  • d4f0d3d - Publisher.timeoutDemand(Duration) not timing out demand (#2652)

Improvements

  • ebd5116 - Clean up discarded response message content on the service side (#2671)
  • b59ad76 - Don't wait for handshake if it's already done when adding last handlers (#2672)
  • d38e5fd - Shuffle DNS records before propagating to LoadBalancer (#2673)
  • 1d05447 - RetryingHttpRequesterFilter use original Publisher avoid SOOE (#2666)

Dependencies

  • 789e6c0 - Update netty 4.1.94 -> 4.1.97 (#2656, #2663, #2679)
  • 04b52e2 - Update OpenTelemetry 1.22.0 -> 1.28.0
  • 2a5a187 - Update proto-google-common-protos 2.17.0 -> 2.21.0
  • aa2fb00 - Update protobuf 3.21.12 -> 3.23.2
  • da7502c - Update protobuf-gradle-plugin 0.8.19 -> 0.9.4 (#2657)

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.

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

0.42.35

12 Jul 23:01
7090878
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

  • 7f0b795 - Publisher.[retry|repeat] change default exception handling mode (#2642)
    • It's unexpected by Reactive Streams specification that Subscriber methods can throw. If they do, Publisher.retry* and Publisher.repeat* operators will try-catch it and propagate IllegalStateException downstream. Previously, such exceptions were propagated upstream and could be observed by the retry predicate, which is not expected. In case users need pre-existing behavior, Publisher.retry* operators added a new overload that takes terminateOnNextException boolean.
  • c30e076 - RetryingHttpRequesterFilter: don't wait for LB if it's unhealthy (#2648)
    • Now LoadBalancer can throw not only NoAvailableHostException but also NoActiveHostException. If users' business logic processes NoAvailableHostException, they should process NoActiveHostException the same way.

API deprecations

  • d078d0d - Publisher.scanWith enhancements (#2640)
    • Deprecate ScanWithMapper and ScanWithLifetimeMapper in favor of the new ScanMapper and ScanLifetimeMapper.
    • Deprecate Publisher.scanWith(Supplier) in favor of the new Publisher.scanWithMapper(Supplier).
    • Deprecate Publisher.scanWithLifetime(Supplier) in favor of the new Publisher.scanWithLifetimeMapper(Supplier).

New features

Bug Fixes

  • 3843dd4 - Publisher.[retry|repeat] operators demand management if onNext throws (#2639)
  • c30e076 - RetryingHttpRequesterFilter: don't wait for LB if it's unhealthy (#2648)

Improvements

  • e257614 - Apply optimized execution strategy for converted connections (#2634)
  • d078d0d - Publisher.scanWith enhancements (#2640)
  • cf1da8d - Enhance debug logging for ReservableRequestConcurrencyControllers (#2645)
  • 140abce - DefaultDnsClient log when resolution fails with an exception (#2646)
  • 996e41b - Publisher.retry wrap exceptions thrown from onNext (#2649)
  • d4a0c22 - Increase default SslConfig.maxCertificateListBytes() to 32Kb (#2650)
  • 2a114c0 - Remove incorrect assertions from logging lifecycle observers (#2644)

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
@tkountis