Finagle 6.33.0
kevinoliver
released this
08 Mar 04:19
·
3955 commits
to develop
since this release
New Features
- finagle-core: Introduce the
c.t.f.service.PendingRequestFactory
module in the client Stack.
The module allows clients to limit the number of pending requests per connection. It is disabled
by default.RB_ID=795491
- finagle-core: Introduce the
c.t.f.filter.ServerAdmissionControl
module in the server Stack,
which is enabled through the paramc.t.f.param.EnableServerAdmissionControl
. Users can define
their own admission control filters, which reject requests when the server operates beyond
its capacity. These rejections apply backpressure and allow clients to retry requests on
servers that may not be over capacity. The filter implementation should define its own logic
to determine over capacity. One or more admission control filters can be installed through
theServerAdmissionControl.register
method.RB_ID=776385
- finagle-core: Introduce
c.t.f.service.ResponseClassifier
which allows developers to
give Finagle the additional application specific knowledge necessary in order to properly
classify them. Without this, Finagle can only safely make judgements about transport
level failures. This is now used byStatsFilter
andFailureAccrualFactory
so that
application level failures can be used for both success metrics and failure accrual.
RB_ID=772906
- finagle-core: Added a new 'Endpoints' section on client pages, listing the weights, paths,
and resolved endpoints for each dtab.RB_ID=779001
- finagle-core: Introduce discoverable stack params which are available on every client/server
via thewith
-prefixed methods.RB_ID=781833
- finagle-memcached: Added
c.t.f.memcached.BaseClient.checkAndSet
which exposes the difference
between a conflict and a not found result. - finagle-mux: Add a Wireshark dissector that can decode Mux messages.
RB_ID=779482
- finagle-stats: Define flag
c.t.f.stats.statsFilterFile
as GlobalFlag[Set[File]] to take
comma-separated multiple files.RB_ID=793397
- finagle-mux: Tinit/Rinit are now available and permit feature negotiation.
RB_ID=793350
Deprecations
- finagle-memcached:
c.t.f.memcached.BaseClient.cas
is deprecated in favor of the richer
checkAndSet
method.
Breaking API Changes
- finagle-core: All the deprecated exceptions from
Exceptions.scala
have been removed.
RB_ID=774658
- finagle-thrift: Remove the
framed
attributes fromc.t.f.Thrift.Client
and
c.t.f.Thrift.Server
. This behavior may now be controlled withc.t.f.Thrift.param.Framed
. - finagle-core: Unused
c.t.f.builder.NonShrinkingCluster
has been removed.
RB_ID=779001
- finagle-thrift:
c.t.f.ThriftRichClient
has a new abstract protected method
responseClassifier: ResponseClassifier
. If your implementation does not need
this, you can implement it withResponseClassifier.Default
.RB_ID=791470
Runtime Behavior Changes
- finagle-thrift,thriftmux: Deserialization of Thrift responses now happens as part
of service application which means that it will now be part of the latency reported by
StatsFilter
. The actual latency as perceived by clients will not have changed, but
for clients that spend significant time deserializing and do not have higher level
metrics this may come as a surprise.RB_ID=772931
- finagle-mux,thriftmux: The default
closeTimeout
in ping based failure detection
is changed from Duration.Top to 4 seconds, to allow a session to be closed by default
when a ping response times out after 4 seconds. This allows sessions to be reestablished
when there may be a networking issue, so that it can choose an alternative networking
path instead.RB_ID=773649
Breaking API Changes
- finagle-thrift: Remove the
framed
attributes fromc.t.f.Thrift.Client
and
c.t.f.Thrift.Server
. This behavior may now be controlled withc.t.f.Thrift.param.Framed
.