Skip to content

Finagle 6.33.0

Compare
Choose a tag to compare
@kevinoliver 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 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 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 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
  • 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.