Finagle v6.41.0 Release Notes

  • ๐Ÿ†• New Features

    
    * finagle-core: Added stat "pending_requests/rejected" for the number of requests
      rejected by `c.t.f.PendingRequestFilter`. ``RB_ID=898184``
    
    ๐Ÿ’ฅ Breaking API Changes
    
    • ๐Ÿšš finagle-core: Remove the Filter#andThen(Req1 => Future[Rep1]): Req2 => Future[Rep2] method. This overload is no longer usable in scala 2.12, because Service is a SAM. Because of the order in which SAMs get resolved, literal functions in scala will get confused about which method they should use. Instead of passing a Function directly, wrap the Function with a Service.mk. RB_ID=896524

    • ๐Ÿšš finagle-core: CancelledWriteException was removed as it is no longer used. RB_ID=896757

    • finagle-core: The structure of Context and its subtypes, LocalContext and MarshalledContext, have been significantly refined, eliminating StackOverflowErrors and memory leaks while also refining the API. The letClear() method, which cleared all items from the context, has been renamed to letClearAll to avoid confusion with other letClear methods which clear individual keys. The bulk letClear method now takes a collection of Key[_]s, making it usable from Java. Bulk let operations can now be done using a collection of KeyValuePairs. RB_ID=896663

    • ๐Ÿšš finagle-kestrel: The codec method has been removed from the kestrel MultiReader object. Configure a ClientBuilder protocol using the default thrift StackClient, Thrift.client, via the stack method of ClientBuilder. RB_ID=894297

    • ๐Ÿšš finagle-memcached: Remove deprecated cluster method on c.t.f.memcached.KetamaClientBuilder. RB_ID=898365

    โš™ Runtime Behavior Changes

    
    * ๐Ÿ— finagle-core: `c.t.f.builder.ClientBuilder` remove deprecated methods.
      The same functionality is available through the Stack-based APIs or
      `ClientBuilder.configured`, with the exception of `channelFactory`, which
      has no analog because it exposes a Netty 3 API. ``RB_ID=893147``
    
        - `channelFactory`
        - `expHostConnectionBufferSize`
        - `hostConnectionIdleTime`
        - `hostConnectionMaxIdleTime`
        - `hostConnectionMaxLifeTime`
        - `hostConnectionMaxWaiters`
        - `readerIdleTimeout`
        - `recvBufferSize`
        - `sendBufferSize`
        - `writerIdleTimeout`
    
    * 0๏ธโƒฃ finagle-core: Lower logging level used in `c.t.f.util.DefaultMonitor` for expected
      exceptions: `CancelledRequestException`, `TooManyWaitersException`,
      `CancelledConnectionException`, `FailedFastException`. ``RB_ID=895702``
    
    * ๐Ÿ”Š finagle-core: `c.t.f.util.DefaultMonitor` now logs most exceptions at
      `WARNING` level instead of `FATAL`. ``RB_ID=895983``
    
    * 0๏ธโƒฃ finagle-core: `c.t.f.util.DefaultMonitor` works harder to find the appropriate
      log level by walking the exception's causes to find `c.t.util.TimeoutExceptions`
      and `c.t.logging.HasLogLevel`. ``RB_ID=896695``
    
    * finagle-core: The `c.t.f.service.Retries` module will now flag a response as
      `NonRetryable` if either the retry limit is reached or the retry budget is exhausted.
      ``RB_ID=897800``
    
    * finagle-mdns: Uses only one implementation backed by jmdns instead of trying
      to use a platform specific implementation of DDNS if present. ``RB_ID=897917``
    
    * finagle-netty4: Client initiated TLS/SSL session renegotiations are now rejected
      by default. ``RB_ID=895871``
    
    * finagle-netty4: `ChannelTransport` no longer interrupts netty write operations
      in order to temporarily unblock rollout of netty4. This reverts netty4 back
      to netty3 semantics for writes. ``RB_ID=896757``
    
    ๐Ÿ—„ Deprecations
    ~~~~~~~~~~~~
    
    * ๐Ÿ—„ finagle-kestrel: Deprecate the `codec` method on `c.t.f.kestrel.MultiReaderMemcache`.
      Use `.stack(Kestrel.client)` on the configured `c.t.f.builder.ClientBuilder` instead.
      ``RB_ID=895989``