Releases: apple/servicetalk
0.42.24
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
- 8cf86df - Deprecate gRPC
ServiceFactory
constructors that takeRouteExecutionStrategyFactory
(#1624)- Users should use
ServiceFactory.Builder#routeExecutionStrategyFactory(...)
method instead.
- Users should use
- debd2df - Deprecate
ConnectionFactoryFilter#append(...)
(#2480)- Users should use
SingleAddressHttpClientBuilder#appendConnectionFactoryFilter(ConnectionFactoryFilter)
instead.
- Users should use
- 39356fd -
RetryingHttpRequesterFilter
: renameofImmediate
(deprecated) toofImmediateBounded
(new method) (#2459) - 4791eaf - Deprecate
ServiceAdapterHolder
interface and some utilities inHttpApiConversions
(#2460) - 38bda20 - Deprecate unnecessary internal methods of
NettyIoExecutors
(#2474) - 8ecb866 - Deprecate unused
DefaultNettyConnection#initChannel(...)
overload (#2489)
New features
- 5941982 - Provide a common HTTP Service interface for all API variants (#2456)
- 2344448 - Introduce
GrpcExecutionStrategies#offloadNone()
(#2478) - 469dc27 - Allow to open a new connection when reserving (HTTP) (#2476)
Bug Fixes
- 5e3e4ce - Fix a memory leak and increased latency for gRPC after adding
ListenableAsyncCloseable.onClosing()
(#2473) - 8e1d448 - Do not apply
InternalRetryingHttpClientFilter
for reserved connections (#2470) - 6c75e8f - Revert "Preserve the caller's stacktrace for blocking API (#2420)" (#2488)
- Avoids memory leak when Netty reuses the same exception instance.
Improvements
- c4dd3e4 - Make HTTP/1.x server-side control flow consistent with the client-side (#2367) (#2423) (#2419)
- 35d326c - Consider request context when we schedule timeouts or retries (#2482)
- b1f8a4d - Perform GRPC route building lazily on bind (#2467)
- 7e7f201 -
SpecialHttpExecutionStrategy
should implement all interface methods (#2469) - 40bdaa8 - Revert "PublisherAsBlockingIterable LinkedBlockingQueue -> LinkedTransferQueue (#2386)" (#2472)
Dependencies
- d2e0021 - Update Netty 4.1.86 -> 4.1.87 (#2487)
- 7e0cc9a - Update proto-google-common-protos 2.9.2 -> 2.12.0
- 9f97b29 - Update protobuf 3.21.4 -> 3.21.12
- 6e829da - Update Jackson 2.14.0 -> 2.14.1
- 2c52333 - Update log4j 2.18.0 -> 2.19.0
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.23
! Note !
This release contains a memory leak introduced in #2430. The issue is fixed in #2473 and available in either 0.42.23.1 or 0.42.24 releases. Upgrade as soon as possible.
Changes
API deprecations
- 8b414d8 - Deprecate
BufferHandler
andBufferHolder
(#2452) - f50a615 - Change return type of
LoadBalancerFactory#newLoadBalancer(...)
(#2465)- A new overload was introduced to change the return type from
<T extends C> LoadBalancer<T>
toLoadBalancer<C>
. This makes it possible for the LoadBalancer implementation to more easily wrap the connection and augment behavior if necessary.
- A new overload was introduced to change the return type from
New features
- e8b584e - This release is JDK19 compatible (#2433)
- 557f530 - Add
ListenableAsyncCloseable#onClosing()
(#2430) - 2ea43f3 - Add
CacheConnectionHttpLoadBalanceFactory
(#2334) - 080d6a0 - Added mark/reset functionality to
BufferInputStream
(#2447)
Bug Fixes
- 344083e -
RetryingHttpRequesterFilter
subtract LB not ready from request retry strategy (#2438) - ce185f1 - CloseHandler force RST on close if still reading to avoid half close hang (#2431)
- 0a9efcc -
RoundRobinLoadBalancer
fix connection leak during graceful closure (#2450) - 8e098e8 -
ConnectionLimitReachedException
should not trigger RRLB health-checking (#2457) - 5608ce7 - Possible race when
MAX_CONCURRENT_STREAMS
setting changes in HTTP/2 (#2461)
Improvements
- d6476f7 -
ScheduledExecutorService
to remove timeout objects on cancel (#2426) - bd5ffea - Improve
DefaultTestCertsTest
and validate cert/key resources (#2427) - b3b6606 - Add
FlowControlUtils.addWithUnderOverflowProtection
forint
(#2437) - b843d5c - Reduce allocation in
PublishAndSubscribeOn*
(#2436) - d5918cc - Provide better exception when connection limit reached in
LimitingConnectionFactoryFilter
(#2454) - e83c645 - Add null checks to generated GRPC API (#2455)
- 10dbc25 -
RetryingHttpRequesterFilter
: changedisableAutoRetries()
, adddisableAllRetries()
(#2458)
Dependencies
- facbcfb - Update Netty 4.1.85 -> 4.1.86 (#2462)
- d76b87b - Update netty-io_uring 0.0.15 -> 0.0.16 (#2443)
Documentation
- 43c69c9 - Add gRPC Request Response Context Example (#2429)
- e9c7be7 - Remove duplicate doc sections from "Blocking: Safe by default" (#2448)
- b93ca66 - Add warning in example that DefaultTestCerts should not be used (#2428)
- f3636fb - Clarify semantics around Jackson's
ByteBufferFeeder
(#2425)
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.
@bobbyowolabi
@daschl
@idelpivnitskiy
@mgodave
@Scottmitch
@tkountis
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.