Skip to content

Releases: apple/servicetalk

0.38.0

12 Mar 17:21
Compare
Choose a tag to compare

Changes

This patch release contains the following significant changes:

New features

  • a72066d - Introduce compression based on Netty's codecs (#1376)
    • io.servicetalk.encoding.api.ContentCodings has been deprecated. Use the Netty based codecs available under the same name, from the io.servicetalk.encoding.netty package.
  • 50079f7 - Add SslConfig APIs (#1387)
  • 8905209 - gRPC Unix Domain Socket Client Support (#1388)
  • c25ebd9 - Publish servicetalk-concurrent-jdkflow artifacts (#1401)
  • 6524c8f - Add GrpcBindableService interface for DI creation and configuration (#1374)
  • e2d422c - Add javadoc comments to gRPC code generation (#1405)

API or Behavior changes

  • 3afe14a - Require gRPC blocking streaming services to close GrpcPayloadWriter (#1406)
    • Be aware that your application needs to close GrpcPayloadWriter instances where previously ServiceTalk would close them when the handler returned.
  • b11aec7 - gRPC missing grpc-status error code update (#1394)
    • grpc-status code was changed from INTERNAL to UNKNOWN if the grpc-status is not present.
  • e6a3522 - Clarify AsyncContext put API relative to @Nullable (#1399)
    • AsyncContextMap values may now be null
  • 9d9720d - Remove deprecated methods from HTTP request/response types (#1340)
    • Removed obsolete payloadBodyAndTrailers, transformRawPayloadBody and transformRaw methods.
  • a0f942a - Remove HTTP/2 content-length header validation (#1421)
    • h2 content-length header validation has moved to netty see CVE-2021-21295. As the result of this change, previously added io.servicetalk.http2.allowInvalidContentLength system property was removed.
  • b1e8532 - Provide opt-out mechansim for HTTP/2 content-length enforcement (#1353)
    • The new opt-out system property is io.netty.http2.validateContentLength (will be removed in future releases).
  • 04db0b6 - Deprecate MultiAddress and Partitioned client builder methods (#1426)
    • Users of MultiAddressHttpClientBuilder and PartitionedHttpClientBuilder should use initializer(SingleAddressInitializer) builder method to customize configuration of internal SingleAddressHttpClient instances instead of methods at the builder itself. Deprecated methods will be removed in the next release.
  • b0c0b24 - Make UdpReporter.Builder#enableWireLogging consistent with other modules (#1418)
    • UdpReporter.Builder#enableWireLogging(String) is deprecated and replaced with a new overload UdpReporter.Builder#enableWireLogging(String, LogLevel, BooleanSupplier). The deprecated variant will be removed in the next release.
  • 471f7de - Change Verifiers.stepVerifier back to StepVerifiers.create (#1392)
    • Renaming of the static factory class and methods to improve code understanding and readability. The deprecated Verifiers class will be removed in the next release.

Bug fixes

  • 9812099 - BufferOutputStream.write(int) should write as byte and not int (#1379)
  • b61f572 - Allow HEAD requests with content-length header over HTTP/2 (#1360)
  • a74c2b4 - Do not fail HTTP/2 single-frame messages with zero content-length (#1371)
  • 50079f7 - Fix SNI and SSL hostname bugs (#1387)
  • 3842a92 - Do not add transfer-encoding: chunked inside transform method (#1408)
  • 7c2ca18 - Fail parsing signed Content-Length header values (#1427)
  • bcf7a68 - FromInputStreamPublisher should apply an upper bound to temporary buffer size (#1416)
  • 125db59 - HeaderUtils#pathMatches incorrectly compares two different CharSequence implementations (#1380)
  • de35c7e - Replace CharSequence equality checks with contentEquals (#1383)
  • ca5b032 - HttpRequestMetaData query string empty value parsing fix (#1355)
  • 1a542c7 - HttpCookiePair impls should treat name and value case-sensitively (#1370)
  • 8cad3b1 - Correctly use emptyAsyncCloseable() (#1367)

Improvements

  • 1a7e144 - Improvements for ContentCodec exceptions (#1428)
  • 811571b - Remove 1ms connect timeout in tests (#1417)
  • 09ae719 - gRPC javadoc comment generation updates (#1414)
  • ea4fe7e - FlakyTest: Replace EmbeddedChannel with SocketChannel for server flush strategy (#1393)
  • f9f6f76 - gRPC Router reduce error log noise (#1403)
  • 44121a1 - TcpConnector reduce log noise (#1400)
  • e33292e - LoadBalancedStreamingHttpClient should not hide PayloadInfo of requests (#1384)
  • 6ad0037 - Switch to non-deprecated Matchers.assertThat (#1382)
  • f5991c4 - Avoid "Maximum active streams violated for this endpoint" at the client level (#1373)
  • 4f3119d - Add Netty epoll dependency for linux-aarch64 (#1372)
  • 7892210 - Update Netty gradle dependencies to runtimeOnly (#1422)
  • 64b11bf - Add additional tests for checking correct validation of HTTP headers (#1369)
  • 45e5ae1 - Improve H2PriorKnowledgeFeatureParityTest#trailersWithContentLength() (#1359)

Documentation

  • 9c2322a - Fix search feature for javadoc website (#1362)
  • 31b64f1 - Reference Reactive-Streams 1.0.3 in Javadoc (#1378)
  • f2434a3 - Add Lazy Execution Interoperability section to docs (#1413)
  • 58777e7 - Add gRPC application level error example (#1402)

Github actions

  • 5a5b473 - Github actions remove out of date version comment (#1358)

Dependency upgrades

Read more

0.37.3

15 Feb 06:12
Compare
Choose a tag to compare

Changes

This patch release contains the following significant changes:

Bug fixes

  • b8eb4fb - Do not fail HTTP/2 single-frame messages with zero content-length (#1371)

Improvements

  • a8c33f7 - Avoid "Maximum active streams violated for this endpoint" at the client level (#1373)

Thank you

Every idea and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

0.37.2

08 Feb 21:03
Compare
Choose a tag to compare

Changes

This patch release contains the following significant changes:

Bug fixes

  • c6efe40 - Allow responses to the HEAD requests with content-length header over HTTP/2 (#1360)
  • 95586af - HttpRequestMetaData query string empty value parsing fix (#1355)

Thank you

Every idea and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

0.37.1

05 Feb 11:16
Compare
Choose a tag to compare

Changes

This patch release contains the following significant changes:

Improvements

  • 13d7f85 - Provide opt-out mechansim for HTTP/2 content-length enforcement (#1353)
    A temporary system property was introduced (io.servicetalk.http2.allowInvalidContentLength)which will be removed in a future release (see commit for more details).

Thank you

Every idea and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

0.37.0

05 Feb 11:16
Compare
Choose a tag to compare

Changes

This release contains the following significant changes:

New features

API changes

  • 4fd7559 - Improve CharSequences#split to support trim and min copies (#1335)
  • 1645999 - Encoding header negotiation deduplication and CharSequences cleanup (#1311)

io.servicetalk.http.api.CharSequences has been deprecated and the replacement is available here io.servicetalk.buffer.api.CharSequences. The deprecated API will be removed in the upcoming releases.

As part of this work the following new methods were introduced:
StreamingHttp[Request|Response]#messageBody()
StreamingHttp[Request|Response]#transformMessageBody(UnaryOperator)

The following methods were deprecated and will be removed in the upcoming releases:
*StreamingHttp[Request|Response]#payloadBodyAndTrailers()
*StreamingHttp[Request|Response]#transformRawPayloadBody(UnaryOperator)
*StreamingHttp[Request|Response]#transformRaw(TrailersTransformer)

Bug fixes

  • f839de4 - Fix broken encoding when publisher has no content (#1345)
  • 2edcee2 - NettyChannelPublisher duplicate onError (#1343)
  • 75d3822 - Completable#merge(Publisher) subscriber concurrency updates (#1334)
  • 5832d5d - HTTP Trailers Propagation Fix (#1332)
  • b549c55 - HTTP/2 CloseHandler avoid writing after channel closed (#1346)
  • aed51b5 - Completable#mergeDelayError(Publisher) and HTTP client control flow (#1336)
  • af2db97 - Remove content-length when transfer-encoding: chunked is present (#1349)
  • f19ae20 - Parse payload body for non-2xx response to CONNECT request (#1347)
  • 93165f0 - EmptySubscription propagate error to Subscriber (#1319)
  • 299c541 - [Single|Completable] to Publisher and Publisher#scanWith offloading and async context fixes (#1333)
  • f7f4daf - HTTP StreamingService to BlockingStreaming backpressure and error propagation fixes (#1328)
  • 2c3bc26 - Publisher#flatMapMerge* preserve error (#1325)
  • 28f740d - Publisher#flatMapConcatIterable(..) to not cancel if onNext throws (#1324)

Improvements

  • 58baa0a - Debug-log when RoundRobinLoadBalancer closes connections to inactive addresses (#1351)
  • 6f5204a - Reject HTTP messages with malformed content-length value(s) (#1350)
  • 044b6a2 - HttpResponseDecoderTest: Improve tests for variable response body length (#1348)
  • 4bddc09 - Add MDC ThreadContextMap conflict check on ST default provider (#1344)
  • ba50beb - gRPC Server allow drop of request trailers (#1341)
  • 9a840ef - Consolidate all HTTP/2 exceptions logic in Http2Exception class (#1318)
  • 759d515 - ServiceTalkTestTimeout remove default min timeout limit (#1322)
  • c18bdfb - Infer HttpProtocolVersion in requests/responses based upon protocol selection (#1321)
  • a13ae07 - Log when global IoExecutor or Executor instance gets closed (#1337)
  • 1cf815a - Publisher [toIterable | toInputStream] simplify internal queue limit (#1331)
  • 4a8a2f7 - OnSubscribeIgnoringSubscriberForOffloading empty subscription usage (#1330)

Github Automations

  • d3293d1 - Improve release scripts for GH remote selection and force clean build… (#1329)

Dependencies upgrade

Documentation

Thank you

Every idea and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

0.36.0

13 Jan 23:36
Compare
Choose a tag to compare

Changes

This release contains the following significant changes:

New features

API changes

  • 1e88cfd - Change HttpConnectionContext#protocol() to return HttpProtocolVersion (#1307)
  • 1e88cfd - Change GrpcServiceContext.GrpcProtocol#httpProtocol() to return HttpProtocolVersion (#1307)
  • 828883e - Wrap all netty's HTTP/2 related exceptions with IOException (#1304)
  • e12955e - DefaultHttpCookiePair#parseCookiePair public -> package private (#1296)
  • 29139a9 - Mark H2ProtocolConfigBuilder#enableFrameLogging(String) as deprecated (#1315)
  • 87f577e - Add @FunctionalInterface annotation for ChannelInitializer (#1288)
  • ea22580 - Remove ServiceDiscovererTestSubscriber (#1293)
  • 683e3fe - Remove deprecated methods effectivePort and effectiveHost from HttpRequestMetaData (#1276)
  • ef75f2e - Revert "[Retry|Repeat]Strategies add deprecated methods to temporarily avoid API breakage introduced by f30df63 (#1244)" (#1275)

Bug fixes

  • 1e88cfd - Don't close entire HTTP/2 connection when request is cancelled (#1307)
  • c75f45f - ServiceTalkHttp2FrameLogger doesn't log names of Http2Settings (#1310)
  • 2625ae9 - Share AsyncContext when RequestTarget*Filter(s) are used (#1308)
  • c4f8ac5 - Some filters won't be executed on retry/repeat (#1302)
  • 8a1e8e6 - Avoid incorrectly throwing QueueFullException from PublisherAsBlockingIterable (#1300)
  • 046c7cc - DefaultSingleAddressHttpClient may add incorrect host header by default (#1301)
  • 142534d - Handle close_notify TLS alert (#1285)
  • 0311cc9 - Completable#merge concurrency fix, new Completable#merge single arg override (#1291)
  • eca3432 - ConcurrentStack prevent duplicate concurrent terminals (#1298)
  • 657774a - CompletableProcessor and SingleProcessor race condition fix (#1283)
  • f4447d5 - DynamicCompositeCancellable race condition fix (#1281)
  • c2e07f3 - Fix incorrect numbers reported by DnsResolutionObserver#resolutionCompleted (#1261)

Improvements

  • db657c3 - Identify retryable Http2Exception(s) generated by netty (#1314)
  • 55ad277 - Make AsyncContext visible from TransportObserver#onNewConnection() (#1303)
  • 129c6f6 - Make sure our Uri parsers correctly handle malformed authorities (#1306)
  • b55a4e8 - Make ServiceTalkWireLogger consistent with LoggingHandler (#1309)
  • 127e145 - DefaultHttpCookiePair#parseCookiePair more strict overflow detection (#1292)
  • cf45962 - FlowControlUtils remove unused methods (#1282)
  • b98aa8d - Http compression integration tests; combatibility with Netty (#1239)
  • 9b9b080 - Improve Tls13Test (#1255)
  • a64c89f - Update import for H2StreamResetException (#1313)
  • 828883e - Wrap all netty's HTTP/2 related exceptions with IOException (#1304)

Github Automations

  • 50da212 - Github Actions, use pull_request and workflow_run instead of pull_request_target (#1279)
  • 7ab5cad - Fix publish-docs.sh checkstyle error, use echo to print usage (#1278)
  • 501f6ee - release.sh to also publish docs (#1274)
  • ae10814 - Github Actions CI, release build should run on any branch for bug fix point releases (#1273)
  • 7d9093d - Github Actions release build should only trigger on main branch AND release tag (#1272)
  • c8e7498 - Github Actions CI, 3rd party action dependencies to use SHA instead of implicit version (#1271)
  • c6f9f1d - Github Actions CI, add quality reports to snapshot and release (#1270)
  • 4af43f1 - Github Actions CI Release Builds (#1269)
  • 5da374b - Github Actions CI name the Snapshot job
  • 367d530 - Github Actions CI Snapshot, escape tag filter string
  • eee3840 - Github Actions CI Snapshots (#1266)
  • e979d47 - Github Actions PRB clarify report task names (#1268)
  • ea403c8 - Github Actions PRB, use pull_request_target event (#1267)
  • ba896cc - Github Actions Pull Request Builder

Dependencies upgrade

  • e540d85 - Bump dawidd6/action-download-artifact from 5b72739630efa11b8d81784b89adf5246a5fc475 to 2.11.0 (#1280)
  • 295216f - Update netty 4.1.56.Final -> 4.1.58.Final, tcnative 2.0.35.Final -> 2.0.36.Final (#1316)
  • 8da6d32 - Update Netty 4.1.55 -> 4.1.56 (#1295)
  • 7c32346 - Update gradle for docs subproject to 6.7.1 (#1263)

Thank you

Every idea and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

0.35.0

10 Dec 00:48
Compare
Choose a tag to compare

Changes

This release contains the following significant changes:

New features

  • 9397909 - ReactiveStreamsAdapters support for Single and Completable (#1252)
  • 17be71a - Add Publisher#completableOrError operator (#1256)
  • f30df63 - [Retry|Repeat]Strategies add jitter delta methods (#1221)
  • c2e214e - Introduce HTTP content encoding (compression) (#1174)

API changes

  • bb2a77c - Consolidation of HTTP codecs with gRPC (#1198)
    • Generated code must be re-compiled. GrpcClientFactory and Builders in generated code method supportedMessageEncodings renamed to supportedMessageCodings.
    • MessageCodec was removed in favor of ContentCodec
    • supportedEncodings() method return type changed from Set to List to preserve ordering (impacts GrpcSerializationProvider, GrpcServiceContext)
    • GrpcService#supportedEncodings() was removed.
    • ContentCodec offset parameter semantic changed from "absolute offset including readerIndex()" to "offset from readerIndex()"
  • c2e214e - Introduce HTTP content encoding H1 & H2 (#1174)
    • GrpcMessageEncodings.none -> GrpcMessageEncodings.identity
    • GrpcMessageCodec -> MessageCodec
  • 298ae4f - Consolidate Test*Subscriber classes (#1229)
    • concurrent-api Test*Subscriber testFixtures moved to concurrent-test-internal
  • d5b4385 - TestPublisherSubscriber API updates (#1241)
  • bd945ac - idleTimeout operator to use io.servicetalk.concurrent.Executor (#1234)

Bug fixes

  • e7d36f3 - Remove DnsClient workaround for Netty SRV cache issue (#1257)
  • d7365be - [Retry|Repeat]Strategies add deprecated methods to temporarily avoid API breakage introduced by f30df63 (#1244)
  • 45fc641 - Jersey to return 400 response for invalid URI (#1242)
  • 197f914 - ByteArrayJacksonDeserializer does not account for readerIndex (#1233)
  • f9c0840 - Publisher to InputStream adapters should return a read byte in -1..255 range (#1238)
  • 435d04d - Fix transformed aggregated requests with missing trailers (#1213)
  • 9e368b1 - Single#concat(Publisher) invalid demand hang (#1230)
  • 801b148 - Publisher#flatMapConcatIterable error recovery from Subscriber#onNext throwing (#1231)
  • d9a5f39 - Ignore Http2SettingsAckFrame frame (#1225)
  • 7a58081 - Publisher#flatMapConcatIterable drain demand on onNext exception (#1222)
  • 62d9e44 - Publisher#flatMapMerge recover from mapped Publisher exception (#1218)

Improvements

  • ead32c7 - Include netty-resolver-dns-native-macos dependency by default (#1246)
  • 2993fd5 - Relax can-add-content-length check (#1260)
  • 2bed998 - DNS Client SRV robustness and A* record Publisher support (#1223)
  • de179dd - gRPC compression compatibility tests (#1232)
  • 8cafd9c - Improve exception messages from HttpObjectDecoder (#1228)
  • 7eb37c3 - Make HttpObjectDecoder more RFC7230 compatible (#1227)
  • 64861ec - Publisher#flatMap*DelayError limit queued exceptions (#1220)

Dependencies upgrade

Thank you

Every idea and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

0.34.0

12 Nov 21:54
Compare
Choose a tag to compare

Changes

This release contains the following significant changes:

New features

  • 87f8717 - Option to configure capacity of the datagram packet buffer for DNS SD (#1193)
  • 1e6ac5f - grpc-protoc typeNameSuffix option (#1184)

API changes

  • f12492c - Introduce primitives to control internal log level (#1199)

Improvements

  • 78c9137 - Improve DefaultHttpRequestMetaData query manipulator methods (#1196)
  • 26f4560 - Http URI related fixes and enhancements (#1194)
  • a733bf3 - Enhance null header value exception (#1195)
  • ce68ee4 - Use IoThreadFactory for IoExecutor in ExecutionContextRule (#1190)
  • 898ec8b - Simplify PrematureClosureBeforeResponsePayloadBodyTest (#1189)
  • cdecc85 - Verify HTTP message is processed if it is followed by malformed data (#1188)
  • a25e994 - Add more test scenarios for HeaderUtils#hasContentType (#1185)
  • 5b0e4ec - Verify that all graceful closure use-cases also work with HTTP/2 (#1180)
  • a0bf19d - Improve servicetalk-test-resources/log4j2.xml (#1181)

Dependencies upgrade

  • 9a6d97b - Update Netty 4.1.53 -> 4.1.54 (#1208)
  • 6ed05c1 - Update proto-google-common-protos 1.18.0 -> 2.0.1 (#1201)
  • c8d3ded - Update log4j 2.13.3 -> 2.14.0 (#1205)
  • 5b8269c - Update grpc-java 1.29.0 -> 1.33.1 [testing dependency] (#1202)
  • 78568f8 - Update spotbugs 4.0.3 -> 4.14, and gradle plugin 4.3.0 -> 4.5.1 (#1191)

Documentation

Thank you

Every idea and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

0.33.0

15 Oct 01:02
Compare
Choose a tag to compare

Changes

This release contains the following significant changes:

New features

  • 3fba2fe - Support Unix Domain Sockets at HttpClientBuilder (#1153)
  • efa6356 - gRPC compression and support of message-encoding (#1151)
  • a323b86 - BlockingStreamingHttp[Response|Response] to support InputStream setter (#1175)
  • 21d9ccc - Add Publisher#flatMapMerge operator (#1011)

API changes

  • fd873e8 - Support batched service discoverer updates (#1146)
  • efa6356 - HeaderUtils.hasContentType is now public (was done as part of #1151)

Improvements

  • c3ff7bf - Avoid Connection reset by peer error when server closes the connection (#1141)
  • 3d57030 - Add tests and examples for mutual TLS (#1179)
  • db7d8fb - ConnectionContext.toString() prints Netty's channel id (#1172)
  • d89d814 - Support half-closure for UnixDomainSockets (#1165)
  • 4dd3782 - servicetalk-grpc-protoc remove plugin.proto (#1163)

Bug fixes

  • 8643b82 - Clear AsyncContext before invoking HttpService (#1150)
  • f314139 - DynamicCompositeCancellable queue full return value fix (#1159)
  • 573c998 - Do not abort server write if the CloseEvent is already registered (#1177)
  • 597e8cd - Support write of read-only Buffer(s) for HTTP/2 (#1171)
  • 04057c9 - Publisher#flatMapMerge queue not drained bug (#1161)
  • 699ce29 - Single#toCompletionStage() avoid cancel if normal termination (#1162)
  • 2301ec6 - Do not complete server write if there are still pending requests (#1155)

Dependencies upgrade

Thank you

Every idea and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.

0.32.0

11 Sep 05:12
Compare
Choose a tag to compare

Changes

This release contains the following significant changes:

Behavior Changes

  • 26b4f60 - Dynamic log level for wire logging and h2 frame logging (#1123)
    • Previously enableWireLogging and enableFrameLogging builder options would always log at TRACE logging level. Now the logging level is dynamic and derived from the logging configuration. You can use the logging configuration to control the log level, disable the logger all together (e.g. log level OFF), and/or filter logging dynamically (e.g. ThresholdFilter from log4j2 or equivalent mechanism with your preferred logging implementation).
  • 7b429c5 - Simplify ServiceDiscoverer generics in client builders (#1144)
  • 13ee468 - Remove servicetalk-grpc-gradle-plugin (#1125)
    • See the commit message for more details and updated example for impacts on your gradle build.

New Features

  • 694ca94 - Observability for connection establishment and read-write events (#1105)
  • 11f8640 - Security handshake observability (#1099)
  • b6abb28 - Observability for connection level events (#1095)

Bug Fixes

  • 50fb8e6 - Ignore checkstyle line length for site-remote.yml
  • 08e7293 - Fix flaky test in HttpTransportObserverTest (#1143)
  • 1d76daa - Allow for continuations in streamed form-url-encoded params during serialization (#1133)
  • 099c9e0 - Fix assertEquals expected & actual order (#1127)

Improvements

  • 09ffa8c - Gradle wrapper validation (#1140)
  • bed2706 - Provide informative exceptions upon gRPC calls when plain h2/h1 resp (#1132)
  • 8a77394 - Improve wrapping with the close reason (#1142)
  • 2939492 - Provide a public factory for BiTransportObserver (#1135)
  • 7137ee3 - Report streamEstablished event, improve streamClosed handling (#1131)
  • b46a949 - Avoid using nullable fields for observers (#1134)
  • d077aac - Propagate SecurityHandshakeObserver without channel attribute (#1129)
  • 77a14d8 - Verify connection close event reported when it is closed after idle timeout (#1130)
  • c49d669 - Propagate ConnectionObserver without channel attribute (#1124)
  • 6dca512 - Introduce CatchAllTransportObserver that catches and logs unexpected exceptions (#1118)
  • 311c9c4 - Configure TransportObserver via ConnectionFactory on the client-side (#1114)
  • 553bef6 - Fix example comments for grpc gradle plugin dependency (#1137)
  • dfe9aad - Improve tests for ALPN (#1128)
  • f795959 - Add tests for HTTP request smuggling in headers (#1126)

Dependencies upgrade

  • c2b33da - Update Netty 4.1.51 -> 4.1.52, netty-tcnative 2.0.31 -> 2.0.32 (#1145)

Thank you

Every idea and bug-report counts and so we thought it is worth mentioning those who helped in this area. Please report an unintended omission.