Finagle 21.5.0
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. c6d5f520 - 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. 60705fd2 - finagle-netty4: Added a new counter to keep track of the number of TLS connections that were
started via snooping. 5569615e - 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.
04a2de2c
Breaking API Changes
- finagle-core: c.t.f.param.Logger has been removed. Use external configuration supported by
your logging backend to alter settings of com.twitter.finagle logger. 99982cda
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. fa58caab
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. 6214e6ac - finagle-http2: The streams gauge is now correctly added for http2 connections over TLS.
c6d5f520 - finagle-core: c.t.f.n.NameTreeFactory will now discard empty elements in
c.t.f.NameTree.Unions with zero weight. cf73946d - finagle-http: All HTTP server implementations consistently return a 400 Bad Request
response status when encountering a URI with invalid character encoded sequences.
fa58caab