Finagle v19.10.0 Release Notes

Release Date: 2019-10-08 // 8 days ago
  • 🆕 New Features

    * 🏗 finagle-partition: Enables cross-build for 2.13.0. ``PHAB_ID=D380444``
    * 🏗 finagle-exception: Enables cross-build for 2.13.0. ``PHAB_ID=D381107``
    * 🏗 finagle-exp: Enables cross-build for 2.13.0. ``PHAB_ID=D380497``
    * finagle-http: Expose header validation API to public. ``PHAB_ID=D381771``
    * 🏗 finagle-mysql: Enables cross-build for 2.13.0. ``PHAB_ID=D377721``
    * 🏗 finagle-{mux,thrift,thrift-mux}: Enables cross-build for 2.13.0. ``PHAB_ID=D373165``
    * 0️⃣ finagle-netty4: Add support to stop default Finagle Netty 4 Timer. ``PHAB_ID=D381605``
    * 🏗 finagle-redis: Enables cross-build for 2.13.0. ``PHAB_ID=D381107``
    * 🏗 finagle-tunable: Enables cross-build for 2.13.0. ``PHAB_ID=D373170``
    * 🏗 finagle-grpc-context: Enables cross-build for 2.13.0. ``PHAB_ID=D373168``
    * finagle-thrift: Pass a factory to create a TReusableBuffer as the parameter of a finagle client
      to allow multiple clients share one TReusableBuffer. ``PHAB_ID=D378466``
    * 🏗 finagle-zipkin-{core,scribe}: Enables cross-build for 2.13.0. ``PHAB_ID=D381675``
    ⚙ Runtime Behavior Changes
    • 🐎 finagle-base-http: Better performance for the default HeaderMap.add method for headers with the same name. PHAB_ID=D381142

    • finagle-http2: H2ServerFilter will no longer swallow exceptions that fire via exceptionCaught in the Netty pipeline. PHAB_ID=D369185

    • 🚚 finagle-http: Remove legacy HTTP/2 client implementation and make the MultiplexHandler-based implementation the default HTTP/2. PHAB_ID=D362950

    💥 Breaking API Changes

    * finagle-core: `c.t.f.l.FailureAccrualFactory`'s `didMarkDead()` changed to `didMarkDead(Duration)`.
      The `Duration` is the length of time the endpoint is marked dead. ``PHAB_ID=D369209``
    * 🚚 finagle-core: removed the `staticDetermisticApertureWidth` flag. The behavior is now as if the flag
      was set to `true` which was also the default behavior. ``PHAB_ID=D382779``
    🐛 Bug Fixes
    • finagle-mux: Mux now properly propagates Ignorable failures multiple levels for superseded backup requests. This allows for more accurate success rate metrics for downstream services, when using backup requests. PHAB_ID=D365729

Previous changes from v19.9.0

  • 🆕 New Features

    • 🏗 finagle-{core,init,toggle,netty4}: Enables cross-build for 2.13.0. f21a54e0
    • finagle-base-http: Add None as a valid SameSite header value. 0c43561a

    💥 Breaking API Changes

    • ✅ finagle-core: The constructor on c.t.f.filter.NackAdmissionFilter used for testing that
      🚚 took an Ema.Monotime has been removed. 38fae802
    • finagle-core: The Adddress.ServiceFactory variant has been promoted from experimental
      🚚 status and moved to be properly part of c.t.f.Address. 68cf34b8
    • 🐎 finagle-http: improve performance of c.t.f.http.filter.StatsFilter. This results in two notable
      API changes: 1. There is a private[filter] constructor which can take a () => Long for
      determining the current time in milliseconds (the existing StatsFilter(StatsReceiver)
      0️⃣ constructor defaults to using Stopwatch.systemMillis for determining the current time in
      milliseconds. 2. The protected count(Duration, Response) method has been changed to
      private[this] count(Long, Response) and is no longer part of the public API.
    • finagle-partitioning: the hash-based routing that memcached uses has been relocated to a new
      top-level module so that it can be used more broadly across protocols. This results
      📦 in several classes moving to the c.t.f.partitioning package: 1. The Memcached.param.EjectFailedHost, KeyHasher, and NumReps parameters are now
      available under c.t.f.partitioning.param 2. The FailureAccrualException and CacheNode definitions are now in the c.t.f.paritioning
      📇 package. 3. The ZkMetadata class has moved to c.t.f.p.zk and the finagle-serverset module now depends
      on finagle-partitioning.

    ⚙ Runtime Behavior Changes

    • finagle-http: c.t.f.http.service.NotFoundService has been changed to no longer
      🗄 use Request.response. Use of Request.response is deprecated and discouraged.
    • finagle-mysql: Handshaking for the MySQL 'Connection Phase' now occurs as part of session
      acquisition. As part of this change, the
      com.twitter.finagle.mysql.IncludeHandshakeInServiceAcquisition toggle
      🚚 has been removed and it no longer applies. cd4877c1
    • ⬆️ finagle: Upgrade to Netty 4.1.39.Final. 001b0940
    • finagle-http: Enable Ping Failure Detection for MultiplexHandler based HTTP/2 clients. Note that
      🚚 the Ping Failure Detection implementation has been removed completely from the
      non-MultiplexHandler based HTTP/2 client. 8af32742
    • finagle: Added a dependency on Scala Collections Compat 2.1.2. f21a54e0

    🐛 Bug Fixes

    • 🚚 finagle-base-http: Removes the Cookie header of a c.t.f.http.Message whenever its cookie map
      becomes empty. f9b76a0f