Releases: apple/servicetalk
0.42.22
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
- 1f780e3 -
Single.concatDeferSubscribe(Publisher)
instead ofSingle.concat(Publisher, boolean)
(#2388) - 93201f5 - Decouple
GrpcStatusException
creation fromGrpcStatus
(#2422)- Deprecate
GrpcStatus
methods and constructors related to creation ofGrpcStatusException
; - Add public methods to
GrpcStatusException
that allow for creation and takeGrpcStatus
as state;
- Deprecate
New features
- 7b250ce - Add support for OpenTelemetry (#2408)
- Adds two new modules
servicetalk-opentelemetry-asynccontext
andservicetalk-opentelemetry-http
that enable native support for OpenTelemetry tracing. Thanks @aleqi200 for the contribution 🎉
- Adds two new modules
- 9d0e9ce - Move gRPC server deadline filter, allow custom insertion order (#2421)
- Adds a new method
defaultTimeout(Duration, boolean)
for gRPC client/server builders to allow users disable default timeout filter position, and addsGrpcFilters
class that users can use to configure timeout filter at any order.
- Adds a new method
- 16d1af6 - HostAndPort to support parsing ip+port string (#2412)
- Adds
HostAndPort.ofIpPort(...)
methods that help parsingIP:port
strings.
- Adds
Bug Fixes
- 72af80a -
DefaultDnsClient
: avoidConcurrentModificationException
(#2424) - 7de32fc -
Publisher#takeUntil
cancel before terminate (#2413)
Improvements
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.21
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 API
- 78c3ee0 - Prepare for an upgrade to Netty 4.1.84 (#2392)
- As part of this improvement, we added a new default method
HttpHeadersFactory.validateNames()
that tells users if the currentHttpHeadersFactory
is configured to validate header names or not.
- As part of this improvement, we added a new default method
Bug Fixes
- b6a0e6d -
StringIndexOutOfBoundsException
while parsing cookies (#2397) - 6b17ccd - H2 TE header parsing bug fix (#2398)
- 6e56db0 - H2 conversion support OWS for connection header csv (#2400)
- 17ec22d -
HeaderUtils
: fix problems with missing space after a semicolon (#2402) - 5d22672 -
BeforeFinallyHttpOperator
: support re-subscribe to the message body (#2409)
Improvements
- 7fb6875 -
WriteStreamSubscriber
: respect termination of the publisher (#2387)" - 92e02c2 - Implement
toString()
forTestPublisherSubscriber#pollTerminal(...)
(#2385) - 78c3ee0 - Prepare for an upgrade to Netty 4.1.84 (#2392)
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.20
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
Dependencies
- 31c7d10 - Use
jackson-bom
instead ofjackson-databind
(#2394)- Also updates jackson version 2.13.4 -> 2.13.4.1
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.19
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
- f927517 - gRPC: apply default timeout filter before user-supplied HTTP client filters (#2390)
- Position of the filter that serves gRPC deadline (
defaultTimeout
) feature moved from the end of the client filter chain to the beginning. It ensures the deadline covers all business logic, including all appended filters, and prevents situations when an added filter can deadlock. Note that starting from this release, any manual modifications for thegrpc-timeout
header won't have an effect on the actual timeout duration for the client. If you need to change its value before the timeout is scheduled, useDefaultGrpcClientMetadata#timeout()
for per-request modifications.
- Position of the filter that serves gRPC deadline (
- aebad36 -
Buffer.[set|write]Bytes
doesn't respect length when reading from InputStream (#2389) - d9d8e93 -
RetryingHttpRequesterFilter
: drain response before mapping to exception (#2391) - abc0d75 - Racy
cancel
from transport does not always cancel the message body (#2369) - 922993b - NettyCompression gzip streaming decompression over multiple buffers fix (#2380)
New APIs
- b1a5c53 - Add
Publisher#concatPropagateCancel(Completable)
to force cancel propagation (#2372) - ffc7353 -
Single#concatPropagateCancel(Publisher)
to force cancel propagation (#2381)
Improvements
- 1c463da -
PublisherAsBlockingIterable
: LinkedBlockingQueue -> LinkedTransferQueue (#2386) - 16a4f8a - Expand allowed types to accommodate custom service discoverer events (#2379)
- 509bec5 -
DefaultPayloadInfo
: enhancetoString()
to print all flags separately (#2373) - 5dc9838 - DefaultBlockingHttp objects to use cast and shareContextOnSubscribe (#2370)
Test Improvements
- c74af36 - Fix flaky
[Http|Grpc]LifecycleObserverTest
(#2376) - 83760f5 - Fix flaky
H2PriorKnowledgeFeatureParityTest.serverGracefulClose()
(#2375) - 8281b15 -
HttpLifecycleObserverTest
: account for CL for*DataRequested
checks (#2374) - 906c4fc - Fix flaky
ResponseCancelTest
(#2337) - 450096e - Add regression tests for netty client factories (#2382)
- f29e8bd - Enhance testing of the server-side control flow (#2377)
Examples
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.18
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
- f8cb571 -
Publisher#flatMapMerge
subscribe after cancel (#2364) - 952ce2e -
ContentEncodingHttpRequesterFilter
to removecontent-length
(#2365) - c11d5a9 -
ContentEncodingHttpServiceFilter
to removecontent-length
(#2366)
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.
0.42.17
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.
As the ServiceTalk API advances towards a 1.0 release all users are strongly encouraged to update their applications to eliminate all use of deprecated APIs. Existing deprecated APIs will be removed in a future ServiceTalk release without further additional notice. If you encounter problems replacing deprecated usages please create a support issue.
Changes
API Deprecations
- 43328e1 - gRPC request/response context to pass data between gRPC and HTTP layers (#2311)
- Deprecate
DefaultGrpcClientMetadata.INSTANCE
constant and the same constant in all generated subtypes. Instead, always create a new instance ofDefaultGrpcClientMetadata
. If theINSTANCE
is used, any manual attempt to access newly added request/response context will throwUnsupportedOperationException
; - In the generated gRPC code, deprecate endpoints that operate with
GrpcPayloadWriter
. Users should migrate to the new overload that hasBlockingStreamingGrpcServerResponse
instead ofGrpcPayloadWriter
;
- Deprecate
- 5e5b746 - Deprecate
CharSequences.asciiStringIndexOf(...)
(#2353)- Users should use
CharSequences#indexOf(...)
instead.
- Users should use
New features
- 43328e1 - gRPC request/response context to pass data between gRPC and HTTP layers (#2311)
- No need to use
AsyncContext
anymore to pass HTTP headers to/from gRPC endpoint.
- No need to use
- 40d2f02 - HTTP/2 set initial settings (#2341, #2346, #2361)
- New API to tune any defined HTTP/2 settings parameters and connection flow-control window.
- 6b6b162 - Introduce
IdleTimeoutConnectionFilter
as alternative toIDLE_TIMEOUT
(#2340)- Helps to track idle connections at L7 OSI layer rather than L4.
Bug Fixes
- 1681caf - HTTP/2 avoid premature connection closure when negotiating via ALPN (#2342)
- f11310c -
AsciiBuffer.indexOf
returns incorrect result for 2-bytes characters (#2352) - 2928a29 -
Publisher#flatMapMerge
allow terminal propagation after invalid demand (#2348)
Improvements
- 8efc07a - Override
toString()
for delegating connection (#2335) - b7b71bc - Improve
DefaultHttp2Settings#toString()
(#2347) - be079c1 - Use
IdleTimeoutConnectionFilter
instead of SocketOption by default (#2349) - 49f5f8f - Improve parsing of
Set-Cookie
headers (#2329) - 9c668f4 - Allow users access
payloadBodyInputStream()
multiple times (#2355)
Dependencies
- 3d8d0e8 - Update Netty 4.1.79 -> 4.1.82 (#2350, #2363)
- 4f1dca1 - Update netty-incubator-transport-native-io_uring 0.0.14 -> 0.0.15 (#2357)
- 0e7eb61 - Update Jackson 2.13.3 -> 2.13.4 (#2358)
Tests improvements
- ba7e826 - Validate HTTP/2 messages with malformed headers are rejected (#2359)
- 8bc579c - Update grpc-java 1.45.1 -> 1.49.0 to test compatibility with the latest release
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.16
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
- 8fbe0d3 - Avoid race when HTTP/1.x request is cancelled at connection level filter (#2331)
- 797b5e5 - BeforeFinallyHttpOperator dereference subscriber after termination (#2327)
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.
0.42.15
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.
As the ServiceTalk API advances towards a 1.0 release all users are strongly encouraged to update their applications to eliminate all use of deprecated APIs. Existing deprecated APIs will be removed in a future ServiceTalk release without further additional notice. If you encounter problems replacing deprecated usages please create a support issue.
Changes
API Deprecations
- 443f412 -
RoundRobinLoadBalancer
health-checking should use DeltaJitter (#2326)RoundRobinLoadBalancerFactory.Builder#healthCheckInterval(Duration)
is deprecated in favor of the new overloadRoundRobinLoadBalancerFactory.Builder#healthCheckInterval(Duration, Duration)
that helps to control base duration and the delta jitter at the same time.
Bug Fixes
- 49bb61f - Publisher#flatMapConcatSingle null value concurrency fix (#2323)
- 9052736 - Add io_uring dependencies with classifiers in
servicetalk-dependencies
(#2328)- This issue didn't let Maven users to pull all transitive dependencies correctly.
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.14
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.
As the ServiceTalk API advances towards a 1.0 release all users are strongly encouraged to update their applications to eliminate all use of deprecated APIs. Existing deprecated APIs will be removed in a future ServiceTalk release without further additional notice. If you encounter problems replacing deprecated usages please create a support issue.
Changes
API Deprecations
Developer note: Additional API deprecation advisories and guidance have been added in each of the 0.41.X releases. Please build your application with the latest 0.41.X release and carefully review the deprecation warnings reported and associated suggestions. Changes to applications may be required for compatibility with future versions of ServiceTalk beyond the API compatible 0.41.X series. While there are many deprecations for planned future API changes, most applications should require few changes as the most significant changes are to internal or specialized APIs. If you have concerns or expect problems related to any of the API deprecations please report these as an issue.
- 24ad6cc - Deprecate
io.servicetalk.client.api.internal.DefaultPartitionedClientGroup
(#2176)- Deprecation of
DefaultPartitionedClientGroup
. We are unaware of any use-cases of this API and we plan to remove it completely in future releases.
- Deprecation of
- 908a84f - Deprecate public gRPC API that is not used anymore by ST (#2300)
- Deprecate
io.servicetalk.grpc.api.GrpcClientFactory#supportedMessageCodings
, variant available asio.servicetalk.grpc.api.GrpcClientFactory#bufferDecoderGroup
, andGrpcRoutes.AllGrpcRoutes
interface.
- Deprecate
- 5cfe9c4 - Revert backward incompatible changes (api & binary) introduced in #2278 (#2306)
- Deprecated
HttpLoadBalancerFactory#toLoadBalancedConnection(FilterableStreamingHttpConnection)
- introduced a variant that also acceptsContextMap
andReservableRequestConcurrencyController
. - Deprecate all classes and interfaces in
io.servicetalk.client.api.internal
package.servicetalk-client-api-internal
module will be removed in future releases.
- Deprecated
- df916b6 - Give access to the underlying TCP ConnectionContext from HTTP/2 service (#2319)
- Deprecate one of
io.servicetalk.transport.netty.internal.DefaultNettyConnection#initChildChannel
overloads.
- Deprecate one of
New API
- 6e47753 - Make
RequestConcurrencyController
public (#2278) - df916b6 - Give access to the underlying TCP ConnectionContext from HTTP/2 service (#2319)
Bug Fixes
Improvements
- 17fbb91 - Null check result of
HttpServerBuilder
supplier (#2317) - d46dbd6 - Throw error when score is invoked on a connection that doesn't support it (#2318)
- a99f319 - Remove logging for duplicate termination in Jersey router (#2316)
- af18034 - gRPC add default method for asBlockingClient to simplify filter creation (#2309)
- 44c4343 - Remove unused internal code from
servicetalk-grpc-api
(#2299) - e5a00b5 - grpc-protoc javadoc testing updates (#2140)
Dependencies
- 86c9b8b - Update protobuf 3.21.2 -> 3.21.4 (#2315)
- 0515fd5 - Upgrade Gradle wrapper 7.5 → 7.5.1 (#2312)
- 48e51f3 - Upgrade JMH 1.3.3 → 1.3.5 (#2272)
- bd7b9da - Add netty-incubator-transport-native-io_uring to
servicetalk-dependencies
(#2295) - c7375c4 - Define
jaxb-impl
asapi
inservicetalk-dependencies
Build/Release/Github actions
- e6225ef - Use
compileJava
options.release
(#2301) - 987538c - Hide use of
sun.misc.Unsafe
fromjavac
(#2303)
Test improvements
- 9c61136 -
ConnectablePayloadWriterTest.multiThreadedProducerConsumer
increase timeout (#2296) - 2a29d60 - Increase
CompositeClosableTest
timeouts (#2302)
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.13
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.
As the ServiceTalk API advances towards a 1.0 release all users are strongly encouraged to update their applications to eliminate all use of deprecated APIs. Existing deprecated APIs will be removed in a future ServiceTalk release without further additional notice. If you encounter problems replacing deprecated usages please create a support issue.
Changes
API Deprecations
- da74e30 - Deprecate unused
ClientInvoker
interface (#2287) - da06991 - Propagate
ContextMap
throughLoadBalancedAddress
(#2285)- Add
LoadBalancedAddress#newConnection(ContextMap)
method; - Deprecate
LoadBalancedAddress#newConnection()
;
- Add
Bug Fixes
- c4b13e9 - Cancellation can leave an HTTP/1.x connection in half-closed state (#2264)
- 9f02857 - Default methods that return async sources should not throw (#2288)
- 4bae4c1 - Handle HTTP/1.1 response cancelation same way at all levels (#2266)
Improvements
- 2a0f45c - servicetalk-bom to include internal depdencies as API (#2283)
- a09e56b -
LoadBalancedStreamingHttpConnection
doesn't need connect strategy (#2274) - 639c1b6 - Implement
toString()
forHttpProtocolConfig
and its components (#2281) - 68b8609 -
WriteStreamSubscriber
: don't interact with Subscription after terminal (#2276) - ed3ea74 - Adjust logging in
IdleTimeoutInitializer
(#2289)
Dependency Updates
- 857e2e5 - Update protobuf 3.21.0 -> 3.21.2 (#2284)
- 8c741fa - Update proto-google-common-protos 2.8.3 -> 2.9.2 (#2294)
- b3bc4db - Update reactive-streams 1.0.3 -> 1.0.4 (#2293)
Build/Release/Github actions
Test 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.