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 aRetryPolicy[(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-httpx: Experimental support
multipart/form-data
(file uploads) decoding viac.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.