Skip to content

Commit

Permalink
docs: release notes for 10.2.5 (#3884)
Browse files Browse the repository at this point in the history
  • Loading branch information
jrudolph authored Jul 26, 2021
1 parent 867a8a5 commit 017543d
Showing 1 changed file with 99 additions and 0 deletions.
99 changes: 99 additions & 0 deletions docs/src/main/paradox/release-notes/10.2.x.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,104 @@
# 10.2.x Release Notes

## 10.2.5

This release includes a set of performance improvements in the HTTP/2 infrastructure. Aside from internal improvements,
some performance-related changes introduce new APIs or settings:

#### HTTP/2: Trailers on messages with Strict entities

HTTP/2 server and client can now send `Strict` entities to completely avoid stream materialization overhead for common
use cases that require no streaming. This required providing a new way to attach trailing headers to a message also for
messages with `Strict` entities. For that purpose the new attribute `AttributeKeys.trailer` of type @apidoc[Trailer] can be
attached to a message. This is a common scenario for gRPC which uses trailing headers to transmit the status code in a response.

Streaming entities using `Chunked` entities can still use the `LastChunk` to provide trailing headers.

See @ref[Trailing Headers](../server-side/http2.md#trailing-headers) for more information.

#### HTTP/2: Collect Strict entities

HTTP/2 servers can request to produce `Strict` entities also for incoming requests by using the new
`akka.http.server.http2.min-collect-strict-entity-size` setting. With that setting, the server can be instructed to
hold back an incoming request to collect more data until either the request has been fully received (`Strict` entity is
dispatched) or the given limit of collected data has been reached (`Chunked` entity is dispatched as before).
This is another optimization to avoid stream materialization overhead where possible for small requests (also common with
simple gRPC requests).

The setting is still disabled by default. See the accompanying comments in the @ref[reference.conf](../configuration.md#configuration)
for more information.

#### Other notable improvements

* Client connection pool has a new `keep-alive-timeout` to avoid race conditions with server-side timeouts.
See @ref[Keep Alive Timeout](../common/timeouts.md#keep-alive-timeout).

### Changes since 10.2.4

#### akka-http-core

##### Features

* Add pool keep-alive-timeout [#3816](https://github.com/akka/akka-http/pull/3816)
* Add flag to log WebSocket frame traffic [#3739](https://github.com/akka/akka-http/pull/3739)
* Move `isStrict` up a level to ws.Message [#3847](https://github.com/akka/akka-http/pull/3847)
* Add setting to automatically collect HTTP/2 request entity data into strict entities [#3829](https://github.com/akka/akka-http/pull/3829)
* Allow trailing HTTP/2 headers on strict responses [#3820](https://github.com/akka/akka-http/pull/3820)

##### Improvements / Fixes

* Include port in HTTP/2 binding warning [#3793](https://github.com/akka/akka-http/pull/3793)
* Don't send '100 Continue' if 'Content-Length' header is 0, doesn't exist or data got sent early [#3786](https://github.com/akka/akka-http/pull/3786)
* Preserve original response headers during server termination [#3819](https://github.com/akka/akka-http/pull/3819)
* Remove the requirement of max-open-requests being a power of two [#3827](https://github.com/akka/akka-http/pull/3827)
* Add detail to onBadProtocol [#2877](https://github.com/akka/akka-http/pull/2877)
* Back off on HTTP/2 client persistent connection failure [#3857](https://github.com/akka/akka-http/pull/3857)
* Block demux stage completion until in-flight ops complete [#3734](https://github.com/akka/akka-http/pull/3734)
* Ensure unhandled error ultimately get translated into GOAWAY frames [#3839](https://github.com/akka/akka-http/pull/3839)
* Properly propagate completion through PersistentConnection [#3855](https://github.com/akka/akka-http/pull/3855)
* Remove Http2FrameRendering stage [#3838](https://github.com/akka/akka-http/pull/3838)
* Remove reflective access to alpn classes (JDK16 support) [#3811](https://github.com/akka/akka-http/pull/3811)

##### Optimizations

* Cache ContentType rendering [#3830](https://github.com/akka/akka-http/pull/3830)
* Cache ModeledHeader.value [#3846](https://github.com/akka/akka-http/pull/3846)
* Cache lowercaseName in `ModeledCustomHeaderCompanion` [#3851](https://github.com/akka/akka-http/pull/3851)
* Only render date-header once per second [#3832](https://github.com/akka/akka-http/pull/3832)
* Don't include RequestTimeoutSupport if disabled [#3862](https://github.com/akka/akka-http/pull/3862)
* Fix UriParser constructor performance [#3813](https://github.com/akka/akka-http/pull/3813)
* Increase some default buffer sizes [#3863](https://github.com/akka/akka-http/pull/3863)
* A few simple microoptimizations that turned up in profiling [#3872](https://github.com/akka/akka-http/pull/3872)
* Append new trailing headers at the end [#3821](https://github.com/akka/akka-http/pull/3821)
* Avoid async boundary in ProtocolSwitch [#3831](https://github.com/akka/akka-http/pull/3831)
* Avoid calling LoggingAdapter.isDebugEnabled in multiplexer [#3869](https://github.com/akka/akka-http/pull/3869)
* Avoid creating GenericOutlet for every out element [#3848](https://github.com/akka/akka-http/pull/3848)
* Avoid extra allocations in frame renderer [#3823](https://github.com/akka/akka-http/pull/3823)
* Cache expensive `isDebugEnabled` call [#3850](https://github.com/akka/akka-http/pull/3850)
* Convert stream handling map to LongMap [#3845](https://github.com/akka/akka-http/pull/3845)
* Don't recordStateChange when debug logging is disabled [#3842](https://github.com/akka/akka-http/pull/3842)
* Fix window management while CollectingIncomingData [#3837](https://github.com/akka/akka-http/pull/3837)
* Provide missing handling logic in CollectingIncomingData state + tests [#3837](https://github.com/akka/akka-http/pull/3837)
* Import shaded twitter hpack library (APL2) [#3849](https://github.com/akka/akka-http/pull/3849)
* Never create Default entity [#3841](https://github.com/akka/akka-http/pull/3841)
* Optimize header parsing by caching headers in HPACK tables [#3861](https://github.com/akka/akka-http/pull/3861)
* Support Strict entities in Http2SubStream [#3824](https://github.com/akka/akka-http/pull/3824)
* Use ByteString.length instead of ByteString.size [#3853](https://github.com/akka/akka-http/pull/3853)
* Use cached ContentType.value instead of toString [#3865](https://github.com/akka/akka-http/pull/3865)
* Use mutable.Queue for state in multiplexer [#3873](https://github.com/akka/akka-http/pull/3873)

#### Build

* Update caffeine from 2.8.8 to 2.9.0 [#3768](https://github.com/akka/akka-http/pull/3768)
* Update github-api from 1.122 to 1.123 [#3777](https://github.com/akka/akka-http/pull/3777)
* Update to Scala 2.13.5, 2.12.13 and scalafix 0.9.26 [#3780](https://github.com/akka/akka-http/pull/3780)
* Finally update to sbt 1.4.7 [#3781](https://github.com/akka/akka-http/pull/3781)
* Publish to sonatype directly [#3792](https://github.com/akka/akka-http/pull/3792)
* Import shaded twitter hpack library (APL2) [#3849](https://github.com/akka/akka-http/pull/3849)
* Update dependencies [#3870](https://github.com/akka/akka-http/pull/3870)
* Disable parallel test execution during Github Actions runs [#3866](https://github.com/akka/akka-http/pull/3866)
* Run full validation when workflow definition has changed [#3881](https://github.com/akka/akka-http/pull/3881)

## 10.2.4

This release fixes [CVE-2021-23339](https://nvd.nist.gov/vuln/detail/CVE-2021-23339), a vulnerability regarding interpretation of `Transfer-Encoding` headers. See
Expand Down

0 comments on commit 017543d

Please sign in to comment.