Finagle v19.6.0 Release Notes

Release Date: 2019-06-19 // 10 months ago
  • 🆕 New Features

    • finagle-core: SSL/TLS session information has been added to c.t.f.ClientConnection.
      69a28c10
    • finagle-core: Add a Stack Module with 7 parameters for convenience sake. 6f9d7f0d
    • finagle-core: For both, servers and clients, introduce a way to shift application-level future
      callbacks off of IO threads, into a given FuturePool or ExecutorService.
      🔧 Use withExecutionOffloaded configuration method (on a client or a server) to access
      🆕 new functionality. 40431bb4
    • finagle-http: Added counters for request/response stream as: stream/request/closed,
      stream/request/failures, stream/request/failures/<exception_name>, stream/request/opened,
      stream/request/pending and stream/response/closed, stream/response/failures,
      stream/response/failures/<exception_name>, stream/response/opened, stream/response/pending.
      The counters will be populated when isChunked is set to true, the failures counters will be
      populated when isChunked is set to true and the stream fails before it has been fully read in the
      request and response respectively. d9b69bdc
    • 🚚 finagle-http: Add two new API variants in CookieMap: addAll and removeAll that allow for
      ➕ adding and removing cookies in bulk, without triggering a header rewrite on each item.
      4127cf6d
    • 👍 finagle-mysql: finagle-mysql now supports using SSL/TLS with MySQL. SSL/TLS can be turned on by
      calling withTransport.tls(sslClientConfiguration) with a specified
      c.t.f.ssl.client.SslClientConfiguration. 0b6c20ac

    ⚙ Runtime Behavior Changes

    • ⬆️ finagle: Upgrade to Netty 4.1.35.Final and netty-tcnative 2.0.25.Final.
      9ffbf7a7
    • 0️⃣ finagle-core: The default failure accrual policy has been changed from one
      which uses only consecutive failures to a hybrid model which uses both
      success rate over a window and consecutive failures. Previously this was
      🔄 changeable via toggle. The toggle has been removed, and the hybrid version
      0️⃣ has been made the default. 6f85c56e
    • finagle-http: Rename request_stream_duration_ms to stream/request/duration_ms and
      response_stream_duration_ms to stream/response/duration_ms. The stats will be
      populated when isChunked is set to true in the request and response respectively.
      d9b69bdc
    • 👀 finagle-http2: Disable ping-based failure detector in HTTP/2 client as it seems to do
      more harm than good. ea5b0c77
    • 0️⃣ finagle-http2: Frame logging is now disabled by default for clients. To enable,
      👉 use the c.t.f.http2.param.FrameLogging.Enabled Stack Param. For example:
      🔧 Http.client.configured(FrameLogging.Enabled). 0b2ec201
    • finagle-netty4: When using a Netty LocalChannel, the value of the BackPressure
      stack param is effectively changed to backPressureDisabled so that other functionality
      (e.g. SSL/TLS) works as expected. 3a8e5c19
    • finagle-netty4: finagle/netty/pooling/used now includes the size of the buffers in the
      thread-local caches. 824596f0
    • finagle-core: Stats and retry modules use a ResponseClassifier to give hints
      for how to handle failure (e.g., Is this a success or is it a failure? If
      it's a failure, may I retry the request?). The stats module increments a
      success counter for successes, and increments a failure counter for failures.
      But there isn't a way to tell the stats module to just do nothing. And, this
      is exactly what the stats module should do (nothing) in the case of ignorable
      failures (e.g. backup request cancellations). To represent these cases, we
      introduce a new ResponseClass: Ignorable. 256b79b8

    🐛 Bug Fixes

    • finagle-core: UsingSslSessionInfo would fail to be constructed properly when
      SSLSession.getLocalCertificates returns 'null'. 8d984963
    • finagle-http: Finagle now properly sets the Transport.peerCertificate local context
      when using HTTP/2. a661fef4
    • finagle-http: c.t.f.http.collection.RecordSchema.Record is now thread-safe.
      4e343f0e
    • finagle-zipkin-core: Fix a race condition which could cause a span to get logged
      missing some annotations. 53901a28
    • 🌲 finagle-mysql: Don't log c.t.f.ChannelClosedException when rolling back a transaction
      fails. 29cfffe6

    💥 Breaking API Changes

    • finagle-core: The exceptions c.t.f.SslHandshakeException and
      c.t.f.SslHostVerificationException were no longer used and have
      🚚 been removed. 2a53531d
    • finagle-mysql: The structure of c.t.f.mysql.Request has changed. It is now based on
      a higher level c.t.f.mysql.ProtocolMessage and the cmd field must contain a value.
      Additionally, the synthetic Command.COM_NO_OP has been removed, as due to the
      restructuring it was no longer necessary. d6e4042f
    • finagle-mysql: Uses of the abbreivation 'cap' have been renamed to the full
      word: 'capabilities', including for the baseCapabilities of Capability.
      4c57afda

    🗄 Deprecations

    • 🚚 finagle-http: Removed deprecated response_size in Finagle Http stats. This is a duplicate stat
      🛰 of response_payload_bytes. 1286c438