Finagle v21.5.0 Release Notes
-
🆕 New Features
* finagle-http2: Added `c.t.f.http2.param.EnforceMaxConcurrentStreams` which allows users to configure http2 clients to buffer streams once a connection has hit the max concurrent stream limit rather than rejecting them. A `buffered_streams` gauge has been added to track the current number of buffered streams. ``PHAB_ID=D643138`` * 👍 finagle-mux: Added support for TLS snooping to the mux protocol. This allows a thriftmux server to start a connection as TLS or follow the existing upgrade pathway at the leisure of the client. This also allows the server to support opportunistic TLS and still downgrade to vanilla thrift. ``PHAB_ID=D584638`` * finagle-netty4: Added a new counter to keep track of the number of TLS connections that were started via snooping. ``PHAB_ID=D667652`` * finagle-thrift: Thrift(Mux) clients and servers now fill in a `c.t.f.Thrift.param.ServiceClass` stack param with the runtime class corresponding to a IDL-generated service stub. ``PHAB_ID=D676781`` 💥 Breaking API Changes
- 🔧 finagle-core:
c.t.f.param.Logger
has been removed. Use external configuration supported by your logging backend to alter settings ofcom.twitter.finagle
logger.PHAB_ID=D618667
⚙ Runtime Behavior Changes
* finagle-http: Make handling of invalid URI consistent across client implementations. There are behavioral inconsistencies amongst the current HTTP client implementations: Our HTTP/1.x clients allow for submitting requests that contain non-ASCII characters and invalid character encoded sequences, while our HTTP/2 clients will either mangle the URI and strip out non-ASCII characters within the Netty pipeline or result in an `UnknownChannelException` when attempting to parse invalid character encoded sequences. With this change, we now consistently propagate an `InvalidUriException` result, which is marked as NonRetryable for all HTTP client implementations. All HTTP server implementations maintain behavior of returning a `400 Bad Request` response status, but now also correctly handle invalid character encoded sequences. ``PHAB_ID=D660069`` 🐛 Bug Fixes ~~~~~~~~~~ * 🐧 finagle-core: Failed writes on Linux due to a remote peer disconnecting should now be properly seen as a `c.t.f.ChannelClosedException` instead of a `c.t.f.UnknownChannelException`. ``PHAB_ID=D661550`` * finagle-http2: The `streams` gauge is now correctly added for http2 connections over TLS. ``PHAB_ID=D643138`` * finagle-core: `c.t.f.n.NameTreeFactory` will now discard empty elements in `c.t.f.NameTree.Union's` with zero weight. ``PHAB_ID=D666635`` * finagle-http: All HTTP server implementations consistently return a `400 Bad Request` response status when encountering a URI with invalid character encoded sequences. ``PHAB_ID=D660069``
- 🔧 finagle-core: