Finagle v6.29.0 Release Notes

  • ๐Ÿ—„ Deprecations

    
    * ๐Ÿšš finagle-http: Deprecated in favour of finagle-httpx and now removed.
    
    ๐Ÿ†• New Features
    
    • finagle-core: Provides a RetryFilter which takes a RetryPolicy[(Req, Try[Rep])] and allows you to retry on both "successful" requests, such as HTTP 500s, as well as failed requests. The Req parameterization facilitates using the request to determine if retrying is safe (i.e. the request is idempotent).

    • ๐Ÿ‘ finagle-httpx: Experimental support multipart/form-data (file uploads) decoding via c.t.f.httpx.exp.Multipart. RB_ID=730102

    โš™ Runtime Behavior Changes

    
    * finagle-core: `InetResolver.bind` will now succeed if any hostname resolution
      succeeds. Previous behavior required that all hosts are successfully resolved.
      ``RB_ID=737748``
    
    * finagle-core: DNS lookups in InetResolver are no longer cached
      within Finagle according to `networkaddress.cache.ttl`; we rely
      instead on however caching is configured in the JVM and OS. ``RB_ID=735006``
    
    * finagle-core: After being revived, a `FailureAccrualFactory` enters a
      'probing' state wherein it must successfully satisfy a request before
      accepting more. If the request fails, it waits for the next `markDeadFor`
      period. ``RB_ID=747541``
    
    * finagle-serversets: DNS lookups in Zk2Resolver are no longer
      cached within Finagle according to `networkaddress.cache.ttl`;
      instead they are cached indefinitely. ``RB_ID=735006``
    
    * finagle-redis: c.t.f.Redis now uses a pipelined dispatcher along with
      a concurrent load balancer to help eliminate head-of-line blocking.
    
    ๐Ÿ’ฅ Breaking API Changes
    ~~~~~~~~~~~~~~~~~~~~
    
    * finagle-core: `RetryingFilter`, which takes a RetryPolicy[Try[Nothing]]` and
      is invoked only on exceptions, has been renamed to `RetryExceptionsFilter`.
      `RetryExceptionsFilter` is a subclass of `RetryFilter`, which takes a
      `RetryPolicy[(Req, Try[Rep])]` and allows you to retry on both "successful"
      requests, such as HTTP 500s, as well as failed requests. The `Req`
      parameterization facilitates using the request to determine if retrying is
      safe (i.e. the request is idempotent).
    
    * finagle-core: Name.all is now private to `com.twitter.finagle`.
    
    * finagle-memcached: Unified stack-based construction APIs and cleanup internal
      constructors. In particular, `KetamaClient` was removed and `KetamaPartitionClient`
      and `KetamaFailureAccrualFactory` are now sealed inside Finagle. See
      [[com.twitter.finagle.Memcached]] for how to construct a finagle-memcached client.
    
    * finagle-redis: Port the c.t.f.Redis protocol object to the StackClient API.
      A redis client can now be constructed and configured like the rest of the
      finagle subprojects.