Releases: apple/servicetalk
0.42.42
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 withServiceDiscoverer
(#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
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
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
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 inRetryStrategies
(#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
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
- Deprecates mistakenly named
- 40e20f5 - Add initializer API for headers of HTTP proxy CONNECT request (#2744)
- Deprecates
SingleAddressHttpClientBuilder.proxyAddress(Object)
in favor of a new methodSingleAddressHttpClientBuilder.proxyConfig(ProxyConfig)
- Deprecates
New Features
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
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 beforeConnectionFactoryFilter
s (#2697)- Previously, it was possible to use
ConnectionFactoryFilter
(s) to intercept HTTPCONNECT
requests to a proxy. In this release,CONNECT
requests are handled internally and they are not visible to users. (#2711) addsConnectionObserver.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.
- Previously, it was possible to use
- 66f838c - Add
ConnectionObserver.ProxyConnectObserver
(#2711)- The sequence of
ConnectionObserver
callbacks for proxy tunneled connections has changed in this release. Previously, those connections triggeredconnectionEstablished
, thenonSecurityHandshake
, and were ready to serve traffic only afterhandshakeComplete
callback. New behavior is that connections are always ready to serve traffic after eitherconnectionEstablished
ormultiplexedConnectionEstablished
callback is invoked.
- The sequence of
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 viaConnectionObserver.onProxyConnect(...)
.
- This key was useful to distinguish the correct callback inside
- 1a65e86 - Improve exceptions thrown when an error happens during proxy
CONNECT
(#2721)- Deprecated
io.servicetalk.http.netty.ProxyResponseException
- Introduced
io.servicetalk.http.api.ProxyConnectResponseException
andio.servicetalk.http.api.ProxyConnectException
instead
- Deprecated
- 4fb2ac1 -
ConnectionObserver
: provideConnectionInfo
on transport handshake (#2726)- Deprecated
ConnectionObserver.onTransportHandshakeComplete()
- Introduced
ConnectionObserver.onTransportHandshakeComplete(ConnectionInfo)
instead
- Deprecated
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
: provideConnectionInfo
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
- 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:
Bug Fixes
Improvements
- b1dda8c - Use
ChannelCloseUtils
inSniCompleteChannelSingle
(#2714) - ee7db1e - Trigger channel read for TLS handshake only on the server-side (#2713)
- 2aacf9e - Remove unnecessary
proxyAddress
fromHttpClientBuildContext
(#2720) - d8e55aa - Use
Publisher.replay
operator (#2700) - c92941c -
ReplayStrategies.LazyTimeLimitedReplayAccumulator
trims and accumulate (#2725)
Dependencies
- ed59931 - Update Netty 4.1.99 -> 4.1.100 (#2727)
- 7aea097 - Update netty io_uring 0.0.22 -> 0.0.23 (#2718)
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
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
forMultiAddressHttpClientBuilder
(#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 includeHost
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
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
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
JsonMappingException
s 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 originalPublisher
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
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*
andPublisher.repeat*
operators will try-catch it and propagateIllegalStateException
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 takesterminateOnNextException
boolean.
- It's unexpected by Reactive Streams specification that
- c30e076 -
RetryingHttpRequesterFilter
: don't wait for LB if it's unhealthy (#2648)- Now
LoadBalancer
can throw not onlyNoAvailableHostException
but alsoNoActiveHostException
. If users' business logic processesNoAvailableHostException
, they should processNoActiveHostException
the same way.
- Now
API deprecations
- d078d0d -
Publisher.scanWith
enhancements (#2640)- Deprecate
ScanWithMapper
andScanWithLifetimeMapper
in favor of the newScanMapper
andScanLifetimeMapper
. - Deprecate
Publisher.scanWith(Supplier)
in favor of the newPublisher.scanWithMapper(Supplier)
. - Deprecate
Publisher.scanWithLifetime(Supplier)
in favor of the newPublisher.scanWithLifetimeMapper(Supplier)
.
- Deprecate
New features
Bug Fixes
- 3843dd4 -
Publisher.[retry|repeat]
operators demand management ifonNext
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 fromonNext
(#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
0.42.34
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
- 348b47d - Add
DnsServiceDiscovererBuilder.consolidateCacheSize(int)
(#2629) - 9823c00 - Allow configuring "negative" DNS TTL for failed resolutions (#2628)
Bug Fixes
Improvements
- f5847e8 - Adjust DNS default max TTL cache boundary to 30 seconds (#2627)
- 09ce257 - Avoid double offloading a service when
offloadAll()
strategy is used (#2631) - 8492622 -
NettyIoExecutors
: allow passing 0 for N ofIoThread
s to infer defaults from Netty (#2630)
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.33
This is a follow up release for 0.42.32 to address the backward compatibility issue. This release is expected to be a "drop-in" replacement for all prior 0.42.X releases.
Changes
Improvements
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.