Finagle v21.3.0 Release Notes

  • ๐Ÿ†• New Features

    
    * finagle-core: Added value `ForceWithDtab` to flag
      `-com.twitter.finagle.loadbalancer.exp.apertureEagerConnections` that forces the
      aperture load balancer to eagerly connect, even in staging environments where
      Dtab locals are set. ``PHAB_ID=D613989``
    
    * finagle-core: Introduce a new `Backoff` to create backoffs based on varies strategies, where
      backoffs are calculated on the fly, instead of being created once and memoized in a `Stream`.
      Also introduced `Backoff.fromStream(Stream)` and `Backoff.toStream` to help with migration to
      the new API. ``PHAB_ID=D592562``
    
    * โฌ†๏ธ finagle-netty4: Upgrade to Netty 4.1.59.Final and TcNative 2.0.35.Final. ``PHAB_ID=D629268``
    
    * finagle-http: Integrate Kerberos authentication filter to finagle http client and server.
      ``PHAB_ID=D634270`` ``PHAB_ID=D621714``
    
    * finagle-core: Provided `c.t.f.ssl.TrustCredentials.X509Certificates` to enable directly
      passing `X509Certificate` instead of passing a `File`. ``PHAB_ID=D641088``
    
    ๐Ÿ’ฅ Breaking API Changes
    
    • ๐Ÿ— finagle: Builds are now only supported for Scala 2.12+ PHAB_ID=D631091

    • finagle-base-http: Kerberos jaas config KerberosConfiguration is replaced with ServerKerberosConfiguration and ClientKerberosConfiguration concrete classes. PHAB_ID=D634270

    • finagle-core: Changed flag -com.twitter.finagle.loadbalancer.exp.apertureEagerConnections" from having Boolean values true or false toEagerConnectionsTypevaluesEnable, Disable, andForceWithDtab.PHAB_ID=D613989`

    • finagle-mysql: The constructor of c.t.f.mysql.transport.MysqlBufReader now takes an underlying c.t.io.ByteReader. Prior uses of the constructor, which took a c.t.io.Buf, should migrate to using c.t.f.mysql.transport.MysqlBufReader.apply instead. PHAB_ID=D622705

    โš™ Runtime Behavior Changes

    
    * โช finagle: Revert to scala version 2.12.12 due to https://github.com/scoverage/sbt-scoverage/issues/319
      ``PHAB_ID=D635917``
    
    * finagle: Bump scala version to 2.12.13 ``PHAB_ID=D632567``
    
    * ๐Ÿšš finagle-core: Move helper tracing methods like `traceLocal` in `Trace` into the `Tracing` class. This
      allows cheaper use of these APIs by first capturing a Trace via `Trace#apply`, avoiding the extra lookups
      that will add overhead on the request path. ``PHAB_ID=D633318``.
    
    * ๐Ÿ— finagle-core: `c.t.finagle.InetResolver`, `c.t.finagle.builder.ClientBuilder`,
      `c.t.finagle.liveness.FailureAccrualFactory`, `c.t.finagle.liveness.FailureAccrualPolicy`,
      `c.t.finagle.param.ClientParams`, `c.t.finagle.param.SessionQualificationParams`,
      `c.t.finagle.service.FailFastFactory`, `c.t.finagle.service.RequeueFilter`,
      `c.t.finagle.service.Retries`, `c.t.finagle.service.RetryFilter`, and
      `c.t.finagle.service.RetryPolicy` will accept the new `c.t.finagle.service.Backoff` to create
      backoffs. Services can convert a `Stream` to/from a `Backoff` with `Backoff.fromStream(Stream)`
      and `Backoff.toStream`. ``PHAB_ID=D592562``
    
    * ๐Ÿšš finagle-core: remove the `com.twitter.finagle.loadbalancer.apertureEagerConnections` Toggle and
      change the default behavior to enable eager connections for `c.t.f.loadbalancer.ApertureLeastLoaded`
      and `c.t.f.loadbalancer.AperturePeakEwma` load balancers. The state of the
      `com.twitter.finagle.loadbalancer.apertureEagerConnections` GlobalFlag now also defaults to enable
      this feature (`Enable`. You can disable this feature for all clients via setting the
      `com.twitter.finagle.loadbalancer.apertureEagerConnections` GlobalFlag to `Disable` for your process.
      (i.e. `-com.twitter.finagle.loadbalancer.apertureEagerConnections=Disable`).
      ``PHAB_ID=D625618``
    
    * ๐Ÿ‘ป finagle-partitioning: Add EndpointMarkedDeadException. Before this change, the exception being
      thrown appeared as an anonymous class and it made deciphering it difficult when it came up in
      stats. Create a concrete class and throw that. ``PHAB_ID=D640835``
    
    ๐Ÿ—„ Deprecations
    ~~~~~~~~~~~~
    * ๐Ÿ—„ finagle-core: `Backoff.fromJava` is marked as deprecated, since the new `Backoff` is java-friendly.
      For services using `Stream.iterator` on the old `Backoff`, please use the new API
      `Backoff.toJavaIterator` to acquire a java-friendly iterator. ``PHAB_ID=D592562``