Finagle v21.8.0 Release Notes

  • 🆕 New Features

    
    * 🚚 finagle-mysql: introduce `newRichClient(dest: String, label: String)` method, which removes the
      need for extra boilerplate to convert the destination String to a `c.t.finagle.Name` when
      specifying both `dest` and `label` in String form. ``PHAB_ID=D706140``
    
    * finagle-http, finagle-thriftmux: introduce client.withSni() API. Use this api to specify an
      SNI hostname for TLS clients. ``PHAB_ID=D712652`` 
    
    * finagle-postgresql: introduce `withStatementTimeout`, `withConnectionInitializationCommands`, 
      and `withSessionDefaults` APIs to allow configuring sessions before they're used. 
      ``PHAB_ID=D746525``
    
    ⚙ Runtime Behavior Changes
    
    • ⚡️ finagle: Update Caffeine cache library to version 2.9.1 PHAB_ID=D660908

    • ⚡️ finagle: Update ScalaCheck to version 1.15.4 PHAB_ID=D691691

    • finagle-core: change ServiceClosedException to extend FailureFlags and to be universally retryable PHAB_ID=710580

    • 🚚 finagle-http: remove the com.twitter.finagle.http.UseH2, com.twitter.finagle.http.UseH2CClients2, com.twitter.finagle.http.UseH2CServers and com.twitter.finagle.http.UseHttp2MultiplexCodecClient toggles. The configuration for c.t.finagle.Http.client and c.t.finagle.Http.server now default to using the HTTP/2 based implementation. To disable this behavior, use c.t.finagle.Http.client.withNoHttp2 and c.t.finagle.Http.server.withNoHttp2 respectively.

    Alternatively, new GlobalFlag's have been introduced to modify the default behavior of clients and servers that have not been explicitly configured, where the com.twitter.finagle.http.defaultClientProtocol and com.twitter.finagle.http.defaultServerProtocol flags can be set to HTTP/1.1 to modify the default client or server configuration, respectively. PHAB_ID=D625880`

    • finagle-netty4: Finagle now reuses Netty "boss" (or parent) threads instead of creating a new thread per server. Netty parent threads are servicing the server acceptor, a relatively lightweight component that listens for new incoming connections before handing them out to the global worker pool. PHAB_ID=D662116

    • finagle-http2: introduce optional parameter NackRstFrameHandling to enable or disable NACK conversion to RST_STREAM frames. PHAB_ID=D702696

    • finagle-thrift, finagle-thriftmux: clients may start reporting (correctly) lower success rate. Previously server exceptions not declared in IDL were erroneously considered as successes. The fgix also improves failure detection and thus nodes previously considered as healthy by failure accrual policy may be considered as unhealthy. PHAB_ID=D698272

    🐛 Bug Fixes

    
    * 🔧 finagle-core: Add `BackupRequestFilter` to client registry when configured. ``PHAB_ID=D686981``
    
    * finagle-thrift, finagle-thriftmux: clients now treat server exceptions
      not declared in IDL as failures, rather than successes,
      and do not skip the configured response classifier for failure accrual.
      ``PHAB_ID=D698272``