Skip to content

Finagle 21.5.0

Compare
Choose a tag to compare
@finaglehelper finaglehelper released this 29 May 01:47
· 742 commits to develop since this release

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