Finagle 6.29.0
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. 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 tonetworkaddress.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 nextmarkDeadFor
period.RB_ID=747541
- finagle-serversets: DNS lookups in Zk2Resolver are no longer
cached within Finagle according tonetworkaddress.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.
RetryExceptionsFilteris 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 andKetamaPartitionClient
andKetamaFailureAccrualFactory
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.