Finagle v6.33.0 Release Notes
-
๐ 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 param `c.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 the `ServerAdmissionControl.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 by `StatsFilter` and `FailureAccrualFactory` 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 the `with`-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 richercheckAndSet
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 from `c.t.f.Thrift.Client` and `c.t.f.Thrift.Server`. This behavior may now be controlled with `c.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 with `ResponseClassifier.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
0๏ธโฃ 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 from `c.t.f.Thrift.Client` and `c.t.f.Thrift.Server`. This behavior may now be controlled with `c.t.f.Thrift.param.Framed`.
- ๐ finagle-memcached: