Skip to content

Releases: apple/servicetalk

0.42.14

11 Aug 17:59
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

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.
  • 908a84f - Deprecate public gRPC API that is not used anymore by ST (#2300)
    • Deprecate io.servicetalk.grpc.api.GrpcClientFactory#supportedMessageCodings, variant available as io.servicetalk.grpc.api.GrpcClientFactory#bufferDecoderGroup, and GrpcRoutes.AllGrpcRoutes interface.
  • 5cfe9c4 - Revert backward incompatible changes (api & binary) introduced in #2278 (#2306)
    • Deprecated HttpLoadBalancerFactory#toLoadBalancedConnection(FilterableStreamingHttpConnection) - introduced a variant that also accepts ContextMap and ReservableRequestConcurrencyController.
    • Deprecate all classes and interfaces in io.servicetalk.client.api.internal package. servicetalk-client-api-internal module will be removed in future releases.
  • df916b6 - Give access to the underlying TCP ConnectionContext from HTTP/2 service (#2319)
    • Deprecate one of io.servicetalk.transport.netty.internal.DefaultNettyConnection#initChildChannel overloads.

New API

  • 6e47753 - Make RequestConcurrencyController public (#2278)
  • df916b6 - Give access to the underlying TCP ConnectionContext from HTTP/2 service (#2319)

Bug Fixes

  • 986a80c - gRPC Trailers-Only response doesn't mark a streaming request as finished (#2313)

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 as api in servicetalk-dependencies

Build/Release/Github actions

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.

@bondolo
@idelpivnitskiy
@Scottmitch
@tkountis

0.42.13

27 Jul 01:18
ff33d11
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

  • da74e30 - Deprecate unused ClientInvoker interface (#2287)
  • da06991 - Propagate ContextMap through LoadBalancedAddress (#2285)
    • Add LoadBalancedAddress#newConnection(ContextMap) method;
    • Deprecate LoadBalancedAddress#newConnection();

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() for HttpProtocolConfig and its components (#2281)
  • 68b8609 - WriteStreamSubscriber: don't interact with Subscription after terminal (#2276)
  • ed3ea74 - Adjust logging in IdleTimeoutInitializer (#2289)

Dependency Updates

Build/Release/Github actions

Test improvements

  • 14e9fa7 - Add .p12 stores for tests which require format (#2286)

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.

@bondolo
@idelpivnitskiy
@Scottmitch
@tkountis

0.42.12

14 Jul 04:03
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

  • 4d890e8 - Deprecate internal classes related to partitioning (#2267)

Bug Fixes

  • d3d4667 - TimeoutHttpRequesterFilter as a connection filter causes ClosedChannelException (#2263)
  • d959d8b - TracingHttpServiceFilter should implement requiredOffloads() (#2260)
  • 397bc76 - Remove reference to obsolete gRPC plugin (#2256)
  • 0f1ac15 - MultiAddressClientBuilder execution strategy control (#2166)
  • de5dca6 - SpliceFlatStreamToMetaSingle: avoid returning a static Throwable (#2253)

Improvements

  • 6e023e0 - Enhance NPE in operators that invoke functions (#2262)
  • 8cc2f32 - Enhance exception message thrown from appendNonOffloadingServiceFilter (#2261)
  • 89a92b7 - BufferDecoderGroupBuilder#add method w/out advertised flag (#2254)

Dependency Updates

  • 26ed662 - Update Netty 4.1.77 -> 4.1.78 (#2250)
  • 7119148 - Upgrade Netty 4.1.78 → 4.1.79 (#2268)
  • 7071632 - Upgrade google common protos 2.8.1 → 2.8.3
  • 28330e3 - Upgrade gradle protobuf plugin 0.8.18 → 0.8.18
  • 5c7974d - Upgrade Log4J 2.17.2 → 2.18.0 (#2269)
  • f855269 - Upgrade Jackson 2.12.2.2 → 2.12.3 (#2270)
  • 28ca713 - Update JCTools 3.3.0 -> 3.3.1-ea, use unpadded queues (#2257)

Documentation & Examples

  • 80c4746 - Link to servicetalk/examples repo (#2249)
  • a04b4f5 - Clarify preferred ordering for [Http|Grpc]LifecycleObserver filters (#2252)

Build/Release/Github actions

Tests

  • b3ca008 - Increase object count in CompositeClosableTest (#2259)

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.

@bondolo
@idelpivnitskiy
@Scottmitch
@tkountis

0.42.11

10 Jun 19:25
Compare
Choose a tag to compare

Changes

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.

The 0.41.x branch is now EOL. Please plan your migrations accordingly, and let us know if you have any questions. The recommended path is:

  1. Update to the latest version of 0.41.x (https://github.com/apple/servicetalk/releases/tag/0.41.16)
  2. Resolve all deprecations. All deprecations include javadocs explaining the recommended replacement approach. The javadocs can pulled by your IDE and also viewable on the 0.41 docs website.
  3. Update to latest version of 0.42.x (see https://github.com/apple/servicetalk/releases - currently this release, 0.42.11)

API Deprecations

  • 5565f32 - Add default implementations for deprecated methods (#2235) - this helps users to start migrating off interface methods that was marked as @Deprecated in previous releases

New Features

  • bff3378 - Add dependencies BOM (#2210)
    • ServiceTalk now provides two BOM (Bill of Materials) files each with slightly different purposes; servicetalk-bom and servicetalk-dependencies. BOM files allow separation of dependency management and version management; a BOM specifies only component versions, not dependencies. Centralizing the management of versions to a single file greatly reduces the maintenance burden for updating to new versions and improves consistency because all references to a dependency will use the same version. The BOM files define the versions of modules which might be included as dependencies, but do not
      include the module as a dependency. Later when the module is included as a dependency, the dependency is specified without including a version and the version specified in the BOM is used.
      The servicetalk-bom BOM includes version information all ServiceTalk modules; version selection for external non-ServiceTalk dependencies is done in individual modules. The servicetalk-dependencies BOM extends the servicetalk-bom by also defining specific versions to be used for the external modules ServiceTalk depends upon. Unless your application requires different versions of these same dependencies then using the servicetalk-dependencies BOM is the most convenient way to ensure that a tested and supported set of modules is used or building and running the application. The servicetalk-dependencies BOM should be preferred whenever possible. Using the servicetalk-bom may be easier when your application wishes to do more complete management of external dependencies, or you wish to include ServiceTalk as an enforcedPlatform, but do not want the external dependencies to be included in that constraint.
      To override a specific dependency version with your application's required version you can use something like the following in your build.gradle:
implementation(platform("io.servicetalk:servicetalk-dependencies:$servicetalkVersion"))

// Overrides the default Netty BOM version imported by ServiceTalk with a specific version
implementation(enforcedPlatform("io.netty:netty-bom")) {
    version {
        strictly '4.1.76.Final'
    }
}
// Overrides the default Jackson databind version with a specific version
implementation ("com.fasterxml.jackson.core:jackson-databind") {
    version {
        strictly '2.13.2.1'
    }
}
  • b952931 - Support Completable from a Callable (#2225)
  • 49e3525 - Make HostHeaderHttpRequesterFilter public (#2212)
  • d85bc3f - Add ConnectionObserver#connectionWritabilityChanged(boolean) (#2229)
  • f9091b0 - HttpLifecycleObserver: notify when payload body is requested (#2230, #2243)

Bug Fixes

  • c0b80c0 - Clear async-context inside RRLB health checking (#2220)
  • 6afe86b - Fix regression of client offloadNone() strategy (#2192)
  • 0e38d94 - Return ExecutionContext with correct strategy (#2244)

Improvements

  • 512558d - Make routers explicit about offloading behavior (#2241)
  • d05e52a - Allow no SP after status-code for HTTP/1.x responses (#2247)
  • f41ce24 - Enhance logging for execution strategy computation (#2224)
  • fc53573 - Log the cause why native transport libs are not loaded (#2226)
  • 05a015c - gRPC improve error status for non-200 h2 response status (#2221)
  • 9c4e932 - Avoid direct usage of RuntimeException (#2228)
  • 45019c5 - Cleanup HttpPredicateRouterBuilder (#2234)
  • 64f2716 - Reduce log level in RoundRobinLoadBalancer (#2213)
  • 13e6b47 - Migrate ON_CONNECTION_SELECTED_CONSUMER to request context (#2239)
  • 0f0f86e - Use servicetalk-dependencies BOM internally (#2217)
  • 05fbfa2 - Use more external dependency BOM files (#2218)
  • cda273e - Use servicetalk-dependencies for tests (#2219)

Dependency Updates

  • 1290f95 - Update netty-incubator-transport-native-io_uring 0.0.13 -> 0.0.14 (#2208)
  • 83fd27c - Update spotbugs 4.6.0 -> 4.7.0 (#2222)
  • 599b059 - Update protobuf 3.20.0 -> 3.21.0 (#2231)

Documentation & Examples

  • e43761c - Update http documentation links to https (#2232)
  • 1d454a7 - Clarify expectations for TransportObserver implementations (#2238)
  • 88bf117 - Spelling error in DefaultHttpExecutionStrategy (#2242)
  • 48a0c54 - Use servicetalk-grpc-protoc-all for pom.xml (#2214)

Build/Release/Github actions

  • 407a90d - Add mavenCentral() repository if no repositories are configured (#2215)
  • ff6436b - Bump dawidd6/action-download-artifact from 2.20.0 to 2.21.0 (#2236)
  • 201748f - Bump dawidd6/action-download-artifact from 2.19.0 to 2.20.0 (#2233)

Tests

  • 8127bde - Add unit test for gRPC over h1, negotiated by TLS+ALPN (#2216)
  • 931ffe4 - Additional test of expected server offloading (#2227)

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.

@bondolo
@chemicL
@domcorvasce 🎉 ** NEW CONTRIBUTOR ** 🎉
@idelpivnitskiy
@Scottmitch
@tkountis

0.42.10

12 May 15:23
Compare
Choose a tag to compare

Changes

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.

The 0.41.x branch is now EOL. Please plan your migrations accordingly, and let us know if you have any questions. The recommended path is:

  1. Update to the latest version of 0.41.x (https://github.com/apple/servicetalk/releases/tag/0.41.16)
  2. Resolve all deprecations. All deprecations include javadocs explaining the recommended replacement approach. The javadocs can pulled by your IDE and also viewable on the 0.41 docs website.
  3. Update to latest version of 0.42.x (see https://github.com/apple/servicetalk/releases - currently this release, 0.42.10)

Bug Fixes

  • 9aec0e0 - Avoid deadlock consuming from blocking Iterator (#2204)
  • 3d26046 - Avoid self-suppression for exceptions (#2211)

Dependency Updates

  • 8b0cf58 - Update Netty 4.1.76 -> 4.1.77 (#2207)
  • 4ce81d5 - Tighter dependency for protoc plugin (#2209)
    • For projects which use the ServiceTalk protoc compiler you may now need to add servicetalk-data-protobuf as a dependency as it is required for the generated classes. The missing dependency is most often seen as package ProtobufSerializerFactory does not exist. Previously servicetalk-data-protobuf had been transitively included for you.
  • dc03468 - fix: servicetalk-data-jackson dependency scopes (#2198)

Documentation & Examples

CI/Build

  • 178fc28 - Combine publish-docs.sh and release.sh (#2196)
  • eaa9cfd - release.sh fixes to build on non-main branch (#2194)
  • b172da3 - Call japicmp.sh from release.sh (#2193)
  • 470759e - Bump dawidd6/action-download-artifact from 2.17.0 to 2.18.0 (#2190)
  • 8d75ff2 - Bump actions/setup-java from 2 to 3 (#2184)
  • 291f7aa - Bump github/codeql-action from 1 to 2 (#2200)
  • d7a5f10 - Bump dawidd6/action-download-artifact from 2.18.0 to 2.19.0 (#2197)

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.

@bondolo
@chemicL
@eddie4941
@idelpivnitskiy
@Scottmitch
@tkountis

0.42.9

15 Apr 09:00
Compare
Choose a tag to compare

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several useful new features, improvements, and bug fixes. This release is expected to be a "drop-in" replacement for all prior 0.42.X releases.

API Deprecations

  • d62bfd2 - Deprecate offloadNever() (#2133)
    • Users should migrate to offloadNone()
  • 4141e33 - LoadBalancer and ConnectionFactory: add a context of the caller (#2168)
    • Deprecate LoadBalancer#selectConnection(Predicate), users should migrate to the new method LoadBalancer#selectConnection(Predicate, ContextMap);
    • Deprecate ConnectionFactory#newConnection(Address, TransportObserver), users should migrate to the new method ConnectionFactory#newConnection(Address, ContextMap, TransportObserver);

New Features

  • 2ca7af2 - Make ServiceTalk protoc plugin extensible (#2160)
  • 071666f - Let ConnectionFactory see difference between proxied and direct connections (#2169)
  • 13107f8 - Introduce HttpProviders and GrpcProviders (#2137)
  • 0124d9f - Add [Single | Completable].cache(...) operators (#2162)
  • 1ab2b76 - Jersey Protobuf Serialization Support (#2159)
  • 0fae5cb - Expose SslConfig through ConnectionInfo (#2150)
  • b274746 - Add grpc-health service implementation (#2147)
  • cdc249e - Add Publisher.flatMapConcatSingle(...) (#2151)
  • c8d0139 - Let users move GrpcLifecycleObserver in the filter chain (#2171)

Improvements

  • 78d1186 - Use more specific ConcurrentMap methods (#2188)
  • 6edc415 - Implement ServiceDiscoverer#toString() for DefaultDnsServiceDiscoverer (#2149)
  • 998fd00 - Processors.newPublisherProcessor() simplify duplicate terminal check (#2148)
  • 125524c - RoundRobinLoadBalancer: better identify excess connections (#2173)
  • fce6b3e - RoundRobinLoadBalancer: increase visibility into health-checking (#2182)
  • d07605e - Always set default ServiceTalkSocketOptions#IDLE_TIMEOUT (5 minutes) (#2174)
  • fbd5cf5 - DNS ServiceDiscoverer: add jitter for the subsequent DNS queries (#2170)
  • c4df3a3 - Conditionally use IoExecutor timer for retry (#2134)

Bug Fixes

  • c08f21e - HTTP/1.x Client write explicit empty buffer fix (#2175)
  • f1a3581 - Update TextMapFormatter: default sampled to null rather than false when extracting trace context (#2177)
  • 3ae63a5 - fix: handle null parent spans in asChildOf calls (#2167)
  • 1c83856 - HTTP/2 handlers should throw Http2Exception and send RST_STREAM frame (#2146)
  • 99712d1 - Publisher.multicast(...) duplicate cancel IndexOutOfBounds exception (#2161)
  • bb0ed15 - Use filter strategy for streaming async server (#2156)
  • 40c3e3c - servicetalk-grpc-protoc name conflict fixes (#2157)

Dependency Updates

Documentation & Examples

  • 6620b3c - Enhance servicetalk-examples-grpc-observer (#2172)
  • 6586322 - CONTRIBUTING - Project Communication section (#2153)
  • 6f0c43a - Enhance javadoc for HttpSerializers.stringStreamingSerializer (#2164)
  • 17c2bb4 - Remove examples for multi-address client that similar to single-address (#2129)
  • bfc8183 - Update offloading documentation (#2039)

CI/Build


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.

@bondolo
@chemicL
@eddie4941
@idelpivnitskiy
@saturnism
@Scottmitch
@suman-ganta
@tkountis

0.41.16

23 Mar 22:35
Compare
Choose a tag to compare

Changes

This is a minor maintenance release appropriate for all ServiceTalk 0.41 users that contains several bug fixes and improvements. The 0.41.X releases are provided for users operating legacy production systems, most users should migrate to the current mainline 0.42 releases.

Bug fixes

  • 00061db - Add publishOn/subscribeOn Executor overload (#2155)
  • ec0aa39 - Revert "Deprecated GrpcClientBuilder#MultiClientBuilder" (#2128)
  • 805a73e - Completable/Single Processors more robust top of stack removal (#2116)
  • 096d4d2 - Fix memory leak in Completable/Single Processors (#2114)

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

10 Mar 21:20
Compare
Choose a tag to compare

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

API deprecation

  • b92caff - Deprecate HttpClients.forMultiAddressUrl(ServiceDiscoverer) (#2132)
    • Instead, MultiAddressHttpClientBuilder#initializer(SingleAddressInitializer) should be used to override ServiceDiscoverer using SingleAddressHttpClientBuilder#serviceDiscoverer(ServiceDiscoverer).
  • a452927 - Deprecated PartitionedHttpClientBuilder and partition client APIs (#2131)
    • PartitionedHttpClientBuilder is hard to use because it requires implementation of a special ServiceDiscoverer that we do not provide OOTB. We are unaware of anyone using this feature, but if there are any users they should consider ClientGroup as an alternative or reach out to us to provide more context why the PartitionedHttpClientBuilder is required.
  • 9c3ed5a - grpc-protoc ServiceFactory.Builder #addService(BlockingService) -> #addBlockingService(BlockingService) (#2143)
    • The existing overloaded method required casting to disambiguate calls or implied compiler warnings when the argument was a lambda. We added a specific method for the blocking service argument to improve the API.

New features

  • 310f6b5 - Allow override of the HttpHeadersFactory for multi-address and partitioned clients (#2135)

Improvements

  • dbcbfd8 - Javadoc for generated gRPC classes has warnings and errors (#2139)
  • a93fc9b - Decouple multi-address and partitioned client builders from HttpClientBuildContext (#2136)
  • 1d84590 - Revert "Removed GrpcClientBuilder#MultiClientBuilder (#1809)" (#2127)
  • 3dbd25a - Enhance URI parsing exceptions (#2126)
  • dd4b95d - Remove use of special defaultStrategy() merge method (#2108)

Bug fixes

  • dd94aea - Remove proxy-connection header from outgoing HTTP/2 messages (#2138)

Examples

  • 2c310bb - Add an HTTP example for protobuf serialization (#2107)

Documentation

Build / CI


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

02 Mar 18:17
Compare
Choose a tag to compare

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

Improvements

  • 70d2a47 - Reduce Publisher/Single retry/repeat allocations (#2120)
  • 3aadf0b - Add missing generics for cast in DefaultAsyncContextProvider (#2122)
  • c64ec90 - Reduce initial size of WriteStreamSubscriber queue (#2119)
  • aef3845 - Reduce initial queue size for h1 pipelined connection (#2118)
  • cf0a8b8 - Minor Processor usage cleanup (#2115)

Dependencies

  • aab5549 - Add netty-tcnative-boringssl-static runtime dependency (#2121)

Examples

  • 48c78c2 - Move existing serialization example to json sub-folder (#2106)

Build / CI

  • 609d3dc - Minor improvement in Github action names (#2123)

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 an unintended omission.

0.42.6

27 Feb 22:52
Compare
Choose a tag to compare

Changes

This is a minor maintenance release appropriate for all ServiceTalk users that contains several bug fixes and improvements.

Bug fixes

  • ddcf256 - Fix memory leak in Completable/Single Processors (#2114)
  • a222317 - Completable/Single Processors more robust top of stack removal (#2116)

Testing