Releases: apple/servicetalk
0.37.1
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
Changes
This release contains the following significant changes:
New features
API changes
- 4fd7559 - Improve
CharSequences#splitto support trim and min copies (#1335) - 1645999 - Encoding header negotiation deduplication and
CharSequencescleanup (#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 -
NettyChannelPublisherduplicateonError(#1343) - 75d3822 -
Completable#merge(Publisher)subscriber concurrency updates (#1334) - 5832d5d - HTTP Trailers Propagation Fix (#1332)
- b549c55 - HTTP/2
CloseHandleravoid writing after channel closed (#1346) - aed51b5 -
Completable#mergeDelayError(Publisher)and HTTP client control flow (#1336) - af2db97 - Remove
content-lengthwhentransfer-encoding: chunkedis present (#1349) - f19ae20 - Parse payload body for non-2xx response to
CONNECTrequest (#1347) - 93165f0 -
EmptySubscriptionpropagate error toSubscriber(#1319) - 299c541 -
[Single|Completable]toPublisherandPublisher#scanWithoffloading 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 ifonNextthrows (#1324)
Improvements
- 58baa0a - Debug-log when
RoundRobinLoadBalancercloses connections to inactive addresses (#1351) - 6f5204a - Reject HTTP messages with malformed
content-lengthvalue(s) (#1350) - 044b6a2 -
HttpResponseDecoderTest: Improve tests for variable response body length (#1348) - 4bddc09 - Add MDC
ThreadContextMapconflict check on ST default provider (#1344) - ba50beb - gRPC Server allow drop of request trailers (#1341)
- 9a840ef - Consolidate all HTTP/2 exceptions logic in
Http2Exceptionclass (#1318) - 759d515 -
ServiceTalkTestTimeoutremove default min timeout limit (#1322) - c18bdfb - Infer
HttpProtocolVersionin requests/responses based upon protocol selection (#1321) - a13ae07 - Log when global
IoExecutororExecutorinstance gets closed (#1337) - 1cf815a -
Publisher [toIterable | toInputStream]simplify internal queue limit (#1331) - 4a8a2f7 -
OnSubscribeIgnoringSubscriberForOffloadingempty subscription usage (#1330)
Github Automations
Dependencies upgrade
Documentation
- 0c99a3e - Examples for HTTP and gRPC compression (#1342)
- 029a728 - URL fix for JAX-RS API documentation (#1338)
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
Changes
This release contains the following significant changes:
New features
API changes
- 1e88cfd - Change
HttpConnectionContext#protocol()to returnHttpProtocolVersion(#1307) - 1e88cfd - Change
GrpcServiceContext.GrpcProtocol#httpProtocol()to returnHttpProtocolVersion(#1307) - 828883e - Wrap all netty's HTTP/2 related exceptions with
IOException(#1304) - e12955e -
DefaultHttpCookiePair#parseCookiePairpublic -> package private (#1296) - 29139a9 - Mark
H2ProtocolConfigBuilder#enableFrameLogging(String)as deprecated (#1315) - 87f577e - Add
@FunctionalInterfaceannotation forChannelInitializer(#1288) - ea22580 - Remove
ServiceDiscovererTestSubscriber(#1293) - 683e3fe - Remove deprecated methods
effectivePortandeffectiveHostfromHttpRequestMetaData(#1276) - ef75f2e - Revert "
[Retry|Repeat]Strategiesadd 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 -
ServiceTalkHttp2FrameLoggerdoesn't log names ofHttp2Settings(#1310) - 2625ae9 - Share
AsyncContextwhenRequestTarget*Filter(s) are used (#1308) - c4f8ac5 - Some filters won't be executed on retry/repeat (#1302)
- 8a1e8e6 - Avoid incorrectly throwing
QueueFullExceptionfromPublisherAsBlockingIterable(#1300) - 046c7cc -
DefaultSingleAddressHttpClientmay add incorrecthostheader by default (#1301) - 142534d - Handle
close_notifyTLS alert (#1285) - 0311cc9 -
Completable#mergeconcurrency fix, newCompletable#mergesingle arg override (#1291) - eca3432 -
ConcurrentStackprevent duplicate concurrent terminals (#1298) - 657774a -
CompletableProcessorandSingleProcessorrace condition fix (#1283) - f4447d5 -
DynamicCompositeCancellablerace condition fix (#1281) - c2e07f3 - Fix incorrect numbers reported by
DnsResolutionObserver#resolutionCompleted(#1261)
Improvements
- db657c3 - Identify retryable
Http2Exception(s) generated by netty (#1314) - 55ad277 - Make
AsyncContextvisible fromTransportObserver#onNewConnection()(#1303) - 129c6f6 - Make sure our
Uriparsers correctly handle malformed authorities (#1306) - b55a4e8 - Make
ServiceTalkWireLoggerconsistent withLoggingHandler(#1309) - 127e145 -
DefaultHttpCookiePair#parseCookiePairmore strict overflow detection (#1292) - cf45962 -
FlowControlUtilsremove 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
Changes
This release contains the following significant changes:
New features
- 9397909 -
ReactiveStreamsAdapterssupport forSingleandCompletable(#1252) - 17be71a - Add
Publisher#completableOrErroroperator (#1256) - f30df63 -
[Retry|Repeat]Strategiesadd 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.
GrpcClientFactoryandBuildersin generated code methodsupportedMessageEncodingsrenamed tosupportedMessageCodings. MessageCodecwas removed in favor ofContentCodecsupportedEncodings()method return type changed fromSettoListto preserve ordering (impactsGrpcSerializationProvider,GrpcServiceContext)GrpcService#supportedEncodings()was removed.ContentCodecoffset parameter semantic changed from "absolute offset including readerIndex()" to "offset from readerIndex()"
- Generated code must be re-compiled.
- c2e214e - Introduce HTTP content encoding H1 & H2 (#1174)
GrpcMessageEncodings.none->GrpcMessageEncodings.identityGrpcMessageCodec->MessageCodec
- 298ae4f - Consolidate
Test*Subscriberclasses (#1229)concurrent-apiTest*SubscribertestFixtures moved toconcurrent-test-internal
- d5b4385 -
TestPublisherSubscriberAPI updates (#1241) - bd945ac -
idleTimeoutoperator to useio.servicetalk.concurrent.Executor(#1234)
Bug fixes
- e7d36f3 - Remove
DnsClientworkaround for Netty SRV cache issue (#1257) - d7365be -
[Retry|Repeat]Strategiesadd deprecated methods to temporarily avoid API breakage introduced by f30df63 (#1244) - 45fc641 - Jersey to return 400 response for invalid URI (#1242)
- 197f914 -
ByteArrayJacksonDeserializerdoes not account forreaderIndex(#1233) - f9c0840 -
PublishertoInputStreamadapters 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#flatMapConcatIterableerror recovery fromSubscriber#onNextthrowing (#1231) - d9a5f39 - Ignore
Http2SettingsAckFrameframe (#1225) - 7a58081 -
Publisher#flatMapConcatIterabledrain demand ononNextexception (#1222) - 62d9e44 -
Publisher#flatMapMergerecover from mappedPublisherexception (#1218)
Improvements
- ead32c7 - Include
netty-resolver-dns-native-macosdependency by default (#1246) - 2993fd5 - Relax can-add-content-length check (#1260)
- 2bed998 - DNS Client SRV robustness and A* record
Publishersupport (#1223) - de179dd - gRPC compression compatibility tests (#1232)
- 8cafd9c - Improve exception messages from
HttpObjectDecoder(#1228) - 7eb37c3 - Make
HttpObjectDecodermore RFC7230 compatible (#1227) - 64861ec -
Publisher#flatMap*DelayErrorlimit queued exceptions (#1220)
Dependencies upgrade
- 9773b43 - Update netty 4.1.54.Final -> 4.1.55.Final, tcnative 2.0.34.Final -> 2.0.35.Final (#1254)
- b496c8b - Update protobuf-gradle-plugin 0.8.13 -> 0.8.14 (#1251)
- 39adbc3 - Update grpc-java 1.33.1 -> 1.34.0 (#1250)
- da3209b - Update zipkin-reporter 2.15.2 -> 2.16.2 (#1249)
- f725752 - Update javapoet 1.12.1 -> 1.13.0 (#1248)
- 16de911 - Update protobuf 3.13.0 -> 3.14.0 (#1247)
- 2ba5d3f - Update jctools 3.1.0 -> 3.2.0 (#1245)
- 1c52455 - Update Jackson 2.10.5 -> 2.10.5.1 (#1237)
- 848b9c3 - Update gradlew 6.5.1 -> 6.7.1 (#1226)
- 618f515 - Update Jersey 2.32 -> 2.30.1 (#1212)
- 14821b2 - Update jakarta.activation 1.2.1 -> 1.2.2 (#1211)
- 7592d9d - Update jakarta.xml.bind-api 2.3.2 -> 2.3.3
- 1f0768f - Update jaxb-impl 2.3.2 -> 2.3.3
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
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
Improvements
- 78c9137 - Improve
DefaultHttpRequestMetaDataquery manipulator methods (#1196) - 26f4560 - Http URI related fixes and enhancements (#1194)
- a733bf3 - Enhance null header value exception (#1195)
- ce68ee4 - Use
IoThreadFactoryforIoExecutorinExecutionContextRule(#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
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 supportInputStreamsetter (#1175) - 21d9ccc - Add
Publisher#flatMapMergeoperator (#1011)
API changes
- fd873e8 - Support batched service discoverer updates (#1146)
- efa6356 -
HeaderUtils.hasContentTypeis now public (was done as part of #1151)
Improvements
- c3ff7bf - Avoid
Connection reset by peererror 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-protocremove plugin.proto (#1163)
Bug fixes
- 8643b82 - Clear
AsyncContextbefore invokingHttpService(#1150) - f314139 -
DynamicCompositeCancellablequeue full return value fix (#1159) - 573c998 - Do not abort server write if the
CloseEventis already registered (#1177) - 597e8cd - Support write of read-only
Buffer(s) for HTTP/2 (#1171) - 04057c9 -
Publisher#flatMapMergequeue 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
- 3080944 - Update Netty 4.1.52 -> 4.1.53, netty-tcnative 2.0.32 -> 2.0.34 (#1176)
- 51c36ab - Update jctools from 3.0.0 to 3.1.0 (#1182)
- 329a9fa - Update zipkin-reporter from 2.15.0 to 2.15.2 (#1183)
- acc8495 - Update jackson 2.10.4 -> 2.10.5 (#1157)
- 350c5b1 - Update protobuf 3.12.1 -> 3.13.0 (#1164)
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
Changes
This release contains the following significant changes:
Behavior Changes
- 26b4f60 - Dynamic log level for wire logging and h2 frame logging (#1123)
- Previously
enableWireLoggingandenableFrameLoggingbuilder options would always log atTRACElogging 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 levelOFF), and/or filter logging dynamically (e.g.ThresholdFilterfrom log4j2 or equivalent mechanism with your preferred logging implementation).
- Previously
- 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
streamEstablishedevent, improvestreamClosedhandling (#1131) - b46a949 - Avoid using nullable fields for observers (#1134)
- d077aac - Propagate
SecurityHandshakeObserverwithout 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
CatchAllTransportObserverthat catches and logs unexpected exceptions (#1118) - 311c9c4 - Configure
TransportObserverviaConnectionFactoryon 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
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.31.0
Changes
This release contains the following significant changes:
New Features
- ab1b686 - Retain addresses on service discovery failure (#1115)
- 7fb95d0 - Add maven build files for gRPC helloworld example (#1091)
Bug Fixes
- 05c28f8 - Fix docs external links from main -> master (#1116)
- c993229 - Do not half-close outbound channel on graceful client closure (#1111)
- 90812d0 - DefaultDnsClientTest.repeatDiscoverNxDomain test failure (#1107)
- 901afcd - HTTP server does not complete the response if handler method throws (#1104)
- 1f44ea7 - Close ServerContext before Executor in AbstractNettyHttpServerTest (#1101)
- 9bcde10 - Use
afterFinallyin examples (#1093)
Improvements
- 758f025 - Remove unused code (#1113)
- b4b02e6 - Replace master terminology with main (#1108)
- 915a4c5 - Add comments to clarify Client duplex behavior (#1106)
- a742c54 - Enhance
connection: closetests to cover more use-cases on the server-side (#1100) - 5607b03 - Ignore NetBeans and VS Code folders in .gitignore (#1096)
- 23dee4c - Log error for unexpected error from a gRPC route (#1098)
- 0938873 - Fix grammar in index.adoc (#1094)
Dependencies upgrade
- 984bdd5 - Update docs gradle 5.6.4 -> 6.5.1, docs node 8.12.0 -> 12.18.3 (#1110)
- 67ed3be - Update gradlew 6.3 -> 6.5.1 (#1109)
- c9abf84 - Upgrade opentracing from 0.31 to 0.33 (#1103)
- f44c251 - Update Netty 4.1.50 -> 4.1.51, netty-tcnative 2.0.30 -> 2.0.31 (#1092)
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.30.0
Changes
This release contains the following significant changes:
Bug Fixes
- 0e26a5f - Fix incorrect request-n management for
Publisher.multicast()(#1083) - 39fab80 - Do not shutdown output channel until client receives the full response (#1090)
Improvements
- f4d6a63 - Improve
LoadBalancerFactory#newLoadBalancer()generics (#1085) - e521e2c - Remove bintray plugin (#1087)
- 1fb7a72 - add Dependabot (#1088)
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.29.0
Changes
This release contains the following significant changes:
New Features
- 5e977e3 - Fail requests if ServiceDiscoverer emits an error (#1070)
- ef44bcb - Observer for DNS ServiceDiscoverer (#1081)
Bug Fixes
- a856d50 - ServiceTalkThreadContextMap to support null values (#1084)
- 6c8db6b - Zipkin Publisher remove explicit io.zipkin.zipkin2:zipkin dependency (#1078)
Improvements
- d37946e - Fix all deprecation warnings from Gradle 6.3 (#1080)
- e514522 - Unwrap the cause only for
DecoderException(#1077) - 848678f - Replace MaxSizeBasedWriteDemandEstimator with EWMAWriteDemandEstimator (#1076)
- aaa77cd - Unwrap instances of
SSLException(#1075) - 5e83430 - Avoid blocking JDK DNS resolutions (#1074)
- 8061128 - Clarify exception when payload body can not be aggregated (#1073)
- b863902 - Configure
ServiceTalkJacksonSerializerFeatureexplicitly and removeorg.glassfish.jersey.jackson.JacksonFeaturecheck (#1072) - 296555b - Method to create
PUTrequests for[Blocking]StreamingHttpRequestFactory(#1064)
Dependencies upgrade
- fbc31d8 - Update versions of quality plugins (#1082)
- e731737 - Update zipkin-reporter 2.12.2 -> 2.15.0 (#1079)
- 198d12c - Update jackson-databind 2.10.3 -> 2.10.4 (#1069)
- 71a4a71 - Update grpc-java 1.27.1 -> 1.29.0 (testing dependency) (#1068)
- f6f8b13 - Update log4j 2.13.1 -> 2.13.3 (#1067)
- a466ba7 - Update proto-google-common-protos 1.17.0 -> 1.18.0 (#1066)
- 90d9e3a - Update protobuf 3.11.4 -> 3.12.1 (#1065)
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.