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 to
EagerConnectionsTypevalues
Enable,
Disable, and
ForceWithDtab.
PHAB_ID=D613989
`finagle-mysql: The constructor of
c.t.f.mysql.transport.MysqlBufReader
now takes an underlyingc.t.io.ByteReader
. Prior uses of the constructor, which took ac.t.io.Buf
, should migrate to usingc.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``