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 of SslClientEngineFactory.getHostname. This no longer performs an unnecessary reverse lookup when a hostname is not supplied as part of the SslClientConfiguration. 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``