Skip to content

Finagle 6.29.0

Compare
Choose a tag to compare
@kevinoliver kevinoliver released this 08 Mar 04:17
· 4169 commits to develop since this release

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 toRetryExceptionsFilter. RetryExceptionsFilteris a subclass ofRetryFilter, 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. TheReq`
    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.