Finagle v18.1.0 Release Notes
-
๐ New Features
* finagle-core: `FailureDetector` has a new method, `onClose`, which provides a Future that is satisfied when the `FailureDetector` marks a peer as Closed. ``PHAB_ID=D126840`` * ๐ฒ finagle-core: Introduce trace logging of requests as they flow through a Finagle client or server. These logs can be turned on at runtime by setting the "com.twitter.finagle.request.Logger" logger to trace level. ``PHAB_ID=D124352`` * finagle-http2: HTTP/2 clients now expose the number of currently opened streams under the `$client/streams` gauge. ``PHAB_ID=D127238`` * finagle-http2: HTTP/2 servers now expose the number of currently opened streams under the `$server/streams` gauge. ``PHAB_ID=D127667`` * 0๏ธโฃ finagle-memcached: By default, the Memcached client now creates two connections to each endpoint, instead of 4. ``PHAB_ID=D119619`` * ๐ finagle-redis: Add support for redis Geo Commands. ``PHAB_ID=D123167`` based on the PR https://github.com/twitter/finagle/pull/628 written by Mura-Mi [https://github.com/Mura-Mi] * finagle-thrift: Add `c.t.f.thrift.service.ThriftServiceBuilder` and `c.t.f.thrift.service.ReqRepThriftServiceBuilder` for backwards compatibility of creating higher-kinded method-per-endpoint clients. ``PHAB_ID=D127538`` * finagle-core: `c.t.f.http.MethodBuilder` and `c.t.f.thriftmux.MethodBuilder` now expose `idempotent` and `nonIdempotent` methods, which can be used to configure retries and the sending of backup requests. ``PHAB_ID=D122087`` ๐ Bug Fixes ~~~~~~~~~ * โช finagle-mysql: Fix a bug with transactions where an exception during a rollback could leave the connection with a partially committed transaction. ``PHAB_ID=D122771`` * finagle-toggle: `c.t.f.toggle.Toggle`s are independent; that is, applying the same value to two different toggles with the same fraction will produce independent true/false values. ``PHAB_ID=D128172`` โ Runtime Behavior Changes
finagle-core, finagle-netty4: When creating engines, SslClientEngineFactories now use
SslClientEngineFactory.getHostString
instead ofSslClientEngineFactory.getHostname
. This no longer performs an unnecessary reverse lookup when a hostname is not supplied as part of theSslClientConfiguration
.PHAB_ID=D124369
finagle-http2: Supplies a dependency on io.netty.netty-tcnative-boringssl-static, which adds support for ALPN, which is necessary for encrypted http/2. To use a different static ssl dependency, exclude the tcnative-boringssl dependency and manually depend on the one you want to use.
PHAB_ID=D119555
๐ฅ Breaking API Changes
* ๐ finagle-base-http, finagle-http: Removed Apache Commons Lang dependency, `org.apache.commons.lang3.time.FastDateFormat` now is `java.time.format.DateTimeFormatter`. ``PHAB_ID=D121479`` * finagle-base-http: `c.t.f.http.Message.headerMap` is now an abstract method. ``PHAB_ID=D120931`` * finagle-core: `c.t.f.ssl.server.SslServerSessionVerifier` no longer uses the unauthenticated host information from `SSLSession`. ``PHAB_ID=D124815`` * ๐ finagle-memcached: `ConcurrentLoadBalancerFactory` was removed and its behavior was replaced by a Stack.Param inside finagle-core's `LoadBalancerFactory`. ``PHAB_ID=D119394`` * finagle-netty4: `Netty4ClientEngineFactory` and `Netty4ServerEngineFactory` were finalized. ``PHAB_ID=D128708`` * ๐ finagle-thrift, finagle-thriftmux: Remove `ReqRep` specific methods. Since the "ReqRep" builders are now subclasses of their non-"ReqRep" counterparts their is no longer a need to expose "ReqRep" specific methods. ``PHAB_ID=D123341`` ๐ Deprecations ~~~~~~~~~~~~ * ๐ finagle-exp: `c.t.f.exp.BackupRequestFilter` has been deprecated. Please use `c.t.f.client.BackupRequestFilter` instead. ``PHAB_ID=D122344`` * ๐ finagle-http: `c.t.f.http.Request.multipart` has been deprecated. Use `c.t.f.http.exp.MultipartDecoder` instead. ``PHAB_ID=D126013``