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 of com.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``