Skip to content

Releases: apple/servicetalk

0.42.25

15 Feb 10:10
2c610e6
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

  • dda6869 - Deprecate ConnectionAcceptor and ConnectionAcceptorFactory (#2491)
    • Migrate to LateConnectionAcceptor and use HttpServerBuilder#appendLateConnectionAcceptor(...) to configure it. Pre-existing HttpServerBuilder#appendConnectionAcceptorFilter(...) is also deprecated.

New features

  • 570a81a - Implement TLS Certificate Compression Support (#2497)
  • 6954627 - Introduce Early and Late ConnectionAcceptors (#2486)

Bug Fixes

  • db3522d - Guard against trying to complete a cancelled Future in DNS service discovery (#2496)

Improvements

  • c3f4145 - GrpcServiceContext should provide access to netty channel id (#2498)
  • 9b8972f - GrpcDeadlineServerFilter: use inner class to capture external state (#2501)
  • 049af48 - Always disable AUTO_READ for TcpServerBinder (#2492)
  • 0dcca97 - Keep only preferred addresses for DNS resolutions (#2500)

Dependencies

  • 27f856b - Update Netty 4.1.87 -> 4.1.89 (#2505)
  • aae691a - Update netty-incubator-transport-native-io_uring 0.0.16 -> 0.0.17
  • 492abdc - Update proto-google-common-protos 2.12.0 -> 2.13.0
  • 9b594e4 - Update OpenTelemetry 1.18.0 -> 1.22.0
  • ec21f9d - Update Jackson 2.14.1 -> 2.14.2
  • e5f0853 - Update jctools 3.3.1-ea -> 4.0.1 (#2351)

Documentation

  • c2e6f84 - Fix some broken {source-root} references in documentation (#2493)

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.23.1

24 Jan 05:52
0c34911
Compare
Choose a tag to compare

This is a recommended bug-fix release only for 0.42.23 users if they can not upgrade to 0.42.24.

Changes

Bug Fixes

  • 2df3fe9 - Fix a memory leak and increased latency for gRPC after adding ListenableAsyncCloseable.onClosing() (#2473)
  • 0e54e33 - Do not apply InternalRetryingHttpClientFilter for reserved connections (#2470)
  • a251047 - Revert "Preserve the caller's stacktrace for blocking API (#2420)" (#2488)
    • Avoids memory leak when Netty reuses the same exception instance.

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.

@daschl
@idelpivnitskiy
@tkountis

0.42.24

13 Jan 17:43
c8b34fc
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

  • 8cf86df - Deprecate gRPC ServiceFactory constructors that take RouteExecutionStrategyFactory (#1624)
    • Users should use ServiceFactory.Builder#routeExecutionStrategyFactory(...) method instead.
  • debd2df - Deprecate ConnectionFactoryFilter#append(...) (#2480)
    • Users should use SingleAddressHttpClientBuilder#appendConnectionFactoryFilter(ConnectionFactoryFilter) instead.
  • 39356fd - RetryingHttpRequesterFilter: rename ofImmediate (deprecated) to ofImmediateBounded (new method) (#2459)
  • 4791eaf - Deprecate ServiceAdapterHolder interface and some utilities in HttpApiConversions (#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.

@daschl
@idelpivnitskiy
@mgodave
@Scottmitch
@tkountis

0.42.23

13 Dec 05:09
e7009fb
Compare
Choose a tag to compare

! 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 and BufferHolder (#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> to LoadBalancer<C>. This makes it possible for the LoadBalancer implementation to more easily wrap the connection and augment behavior if necessary.

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 for int (#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: change disableAutoRetries(), add disableAllRetries() (#2458)

Dependencies

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

15 Nov 22:29
50afdcf
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

  • 1f780e3 - Single.concatDeferSubscribe(Publisher) instead of Single.concat(Publisher, boolean) (#2388)
  • 93201f5 - Decouple GrpcStatusException creation from GrpcStatus (#2422)
    • Deprecate GrpcStatus methods and constructors related to creation of GrpcStatusException;
    • Add public methods to GrpcStatusException that allow for creation and take GrpcStatus as state;

New features

  • 7b250ce - Add support for OpenTelemetry (#2408)
    • Adds two new modules servicetalk-opentelemetry-asynccontext and servicetalk-opentelemetry-http that enable native support for OpenTelemetry tracing. Thanks @aleqi200 for the contribution 🎉
  • 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 adds GrpcFilters class that users can use to configure timeout filter at any order.
  • 16d1af6 - HostAndPort to support parsing ip+port string (#2412)
    • Adds HostAndPort.ofIpPort(...) methods that help parsing IP:port strings.

Bug Fixes

  • 72af80a - DefaultDnsClient: avoid ConcurrentModificationException (#2424)
  • 7de32fc - Publisher#takeUntil cancel before terminate (#2413)

Improvements

  • 8b41bf4 - Preserve the caller's stacktrace for blocking API (#2420)

Dependencies

  • 4ebd767 - Update Netty 4.1.82 -> 4.1.85 (#2415)
  • 927529e - Update Jackson 2.13.4.20221013 -> 2.14.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.

@aleqi200
@mgodave
@idelpivnitskiy
@Scottmitch
@tkountis

0.42.21

27 Oct 23:08
14314ec
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 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 current HttpHeadersFactory is configured to validate header names or not.

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() for TestPublisherSubscriber#pollTerminal(...) (#2385)
  • 78c3ee0 - Prepare for an upgrade to Netty 4.1.84 (#2392)

Dependencies

  • 6acca41 - Update Jackson 2.13.4.20221012 -> 2.13.4.20221013 (#2396)

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.

@mgodave
@idelpivnitskiy
@Scottmitch
@tkountis

0.42.20

13 Oct 23:47
c5084b8
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

  • 01d075b - Buffer.[set|write]Bytes doesn't return -1 after EOF (#2395)

Dependencies

  • 31c7d10 - Use jackson-bom instead of jackson-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.

@mgodave
@idelpivnitskiy
@Scottmitch
@tkountis

0.42.19

12 Oct 19:55
13d060a
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

  • 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 the grpc-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, use DefaultGrpcClientMetadata#timeout() for per-request modifications.
  • 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: enhance toString() 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.

@mgodave
@idelpivnitskiy
@Scottmitch
@tkountis

0.42.18

27 Sep 04:11
8ce38fe
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

  • f8cb571 - Publisher#flatMapMerge subscribe after cancel (#2364)
  • 952ce2e - ContentEncodingHttpRequesterFilter to remove content-length (#2365)
  • c11d5a9 - ContentEncodingHttpServiceFilter to remove content-length (#2366)

Improvements

  • ae4d6d1 - Improvements for Set-Cookie parsing, allow lax parsing of older specs (#2368)

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.

@chrisvest
@idelpivnitskiy
@Scottmitch
@tkountis

0.42.17

14 Sep 15:42
6ac3443
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.
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 of DefaultGrpcClientMetadata. If the INSTANCE is used, any manual attempt to access newly added request/response context will throw UnsupportedOperationException;
    • In the generated gRPC code, deprecate endpoints that operate with GrpcPayloadWriter. Users should migrate to the new overload that has BlockingStreamingGrpcServerResponse instead of GrpcPayloadWriter;
  • 5e5b746 - Deprecate CharSequences.asciiStringIndexOf(...) (#2353)
    • Users should use CharSequences#indexOf(...) instead.

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.
  • 40d2f02 - HTTP/2 set initial settings (#2341, #2346, #2361)
  • 6b6b162 - Introduce IdleTimeoutConnectionFilter as alternative to IDLE_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

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.

@chrisvest
@idelpivnitskiy
@Scottmitch
@tkountis