Expert talks delivered virtually on Nov 10 Register Here
From the creators of Akka, get technology enhancements, monitoring, and expert support with Akka Platform from Lightbend. Learn More

News & Articles

Full archive

December 01

2017

Akka HTTP 10.0.11 Released

Dear hakkers,

We are happy to announce Akka Http 10.0.11, the eleventh release of the Akka Http 10.0 series. It marks the one year anniversary of the 10.0 series. As a special present the community and Akka team worked together to add the long awaited akka-http-caching module inspired by spray-caching.

It also features a new implementation of the client pool infrastructure. This will allow us in the future to finally tackle many of the issues reported for the existing infrastructure like request timeouts, handling unread response entities, and other issues more easily.

In an ongoing behind-the-scenes effort, @jonas, @jlprat and others continued to improve the structure of our documentation to consolidate Java and Scala documentation. This reduction in duplication of documentation content will allow us to make changes to the documentation more easily in the future. Thanks a lot!

New caching module, akka-http-caching

In a several month long effort members from the community and the Akka team discussed and implemented the long-awaited replacement of spray-caching. The new module akka-http-caching got quite an overhaul over spray-caching and is now backed by caffeine.

Thanks a lot, @tomrf1, @jonas, @ben-manes, @ianclegg for the fruitful discussions and for providing the implementation!

The caching API is currently marked with @ApiMayChange and thus may change based on feedback from real world usage. Some improvements are already planned to make it into future releases. We hope further collaboration within the community will help us stabilize the API.

See the documentation for more information.

Http Client Pool Infrastructure Rewrite

The existing host connection pool infrastructure has accrued quite a lot of issues that are hard to fix. Therefore, we decided to rewrite the old version which was based on a stream graph jungle with a new version implemented as a single GraphStage which will be easier to maintain. The new infrastructure already passes all the old tests and is now considered ready to be tested. The new implementation can be enabled with the feature flag akka.http.host-connection-pool.pool-implementation = new. One important feature that is available only with the new pool implementation is a new warning that will be shown if user code forgets to read or discard a response entity in time (which is one of the most prominent usage problems with our client API). If you experienced problems with the old implementation, please try out the new implementation and report any issues you find.

We hope to stabilize the new implementation as soon as possible and are going to make it the default in a future version.

Incompatible changes to akka.http.{java,scala}dsl.coding classes

To clean up internal code, we made a few incompatible changes to classes that were previously kept public accidentally. We now made those classes private and marked them as @InternalApi. Affected classes are akka.http.scaladsl.coding.DeflateDecompressorBase, akka.http.scaladsl.coding.DeflateCompressor, and akka.http.scaladsl.coding.GzipCompressor. The actual codec APIs, Gzip and Deflate, are not affected. This is in violation with a strict reading of our binary compatibility guidelines. We still made that change for pragmatic reasons because we believe that it is unlikely that these classes have been used or extended by third parties. If this assumption turns out to be too optimistic and integration with third-party code breaks because of this, please let us know.

List of Changes

Improvements

akka-http-core
  • New host connection pool infrastructure (#1312)
  • Allow disabling of parsing to modeled headers (#1550)
  • Convert RFC references in documents in model classes to scaladoc (#1514)
  • Allow configuration of default http and https ports (#1449)
  • Remove unnecessary implicit materializer parameter in several top-level Http entry point APIs (#1464)
  • Add X-Forwarded-Proto and X-Forwarded-Host header models (#1377)
  • Lookup predefined header parsers as early as possible (#1424)
akka-http
  • Add multiple file upload directive (#1033)
  • Add Marshaller.oneOf(m1, m2) to JavaDSL (#1551)
  • Improve performance of LineParser for SSE unmarshalling (#1508)
  • Automatically probing and decompression support for zlib wrapped deflate streams (#1359)
  • Simplify implicit parameter structure in FormFieldDirectives (#541)
  • Return BadRequest when size of FormData exceeds limit of withSizeLimit directive (#1341)
akka-http-testkit
  • Provide Dilated Timeouts for Java Testkit (#1271)
  • Add more comprehensive description of the TestRoute run methods (#1148)
  • Add a runWithRejections method to the Java TestRoute API (#1148)
  • Support separation of route execution from checking in the Java DSL (#1148)
akka-http-caching
  • New module partly ported from spray-caching backed by caffeine (#213)
Documentation
  • Ongoing work on consolidating Java and Scala documentation (#1290)
  • Update Paradox and docs to use new features (#1436)
Build
  • Update to sbt 1.0.x

Bug Fixes

akka-http-core
  • Fix userinfo parsing to percent decode input in UriParser (#1558)
  • Remove duplicate settings from akka.http.host-connection-pool.client so that akka.http.client will be picked up by default (#1492)
  • Add minConnections modifier to javadsl ConnectionPoolSettings (#1525)
  • Fix race condition in WebSocket switch leading to broken websocket connections in tests (#1515)
akka-http
  • Mark coding implementation classes as internal API (#1570)

Credits

A total of 62 issues were closed since 10.0.10.

The complete list of closed issues can be found on the 10.0.11 milestone milestones on GitHub.

For this release we had the help of 33 contributors – thank you all very much!

commits added removed
   24    2346     387 Johannes Rudolph
   13     918     444 Jonas Fonseca
    8      53      45 Arnout Engelen
    7      81      30 Konrad `ktoso` Malawski
    5      37      15 Kyle Song
    3     137     142 Martynas Mickevičius
    3     264     350 Atiq Sayyed
    2     166      34 tom-walford
    2      16      23 Christopher Batey
    2      12      11 golem131
    2      22       3 Ángel Cervera Claudio
    1       1       1 Kuba Gruszka
    1       2       1 Jimin Hsieh
    1       6       4 olofwalker
    1       4       4 Daniel Kalman
    1      49       5 Dmitry Avershin
    1      53       4 Song Kun
    1       6       6 Logan Nelson
    1      20       0 Tim Steinbach
    1       1       1 Tim Moore
    1     157      11 Kennedy Oliveira
    1     739      70 Andrew Lawson
    1       1       1 abrasha
    1       2       2 satansk
    1     963       2 tomrf1
    1       1       1 Matthias Lüneberg
    1      26       0 Andriy Yurchuk
    1      13       0 Niko Will
    1       1       1 Juan José Vázquez
    1     106       2 Josep Prat
    1       3       3 Jim Balhoff
    1       2       0 Michel Davit
    1      13       2 James Roper

Happy hakking!

– The Akka Team