Skip to content

Finagle 18.5.0

Compare
Choose a tag to compare
@finaglehelper finaglehelper released this 08 May 21:21
· 2050 commits to develop since this release

New Features

  • finagle-base-http: Added ability to add SameSite attribute to Cookies to
    comply with https://tools.ietf.org/html/draft-west-first-party-cookies-07.
    The attribute may be set in the constructor via the c.t.f.http.Cookie
    sameSite param or via the c.t.f.http.Cookie.sameSite method.

    • Pass SameSite.Lax to the Cookie to add the "Lax" attribute.
    • Pass SameSite.Strict to the Cookie to add the "Strict" attribute.
      4b0a58b0
  • finagle-base-http: Introduced an API to extract query string params from a
    c.t.f.http.Request, c.t.f.http.Uri.fromRequest and c.t.f.http.Uri#params.
    0dd0a425

  • finagle-mysql: Added APIs to Row which simplify the common access pattern.
    For example, Row.stringOrNull(columnName: String): String and
    Row.getString(columnName: String): Option[String].
    f3676d31, f3676d31

  • finagle-mysql: Added read and modify APIs to c.t.f.mysql.Client and
    c.t.f.mysql.PreparedStatement for that return the specific type of
    Result for those operations, ResultSet and OK respectively.
    2f3650cf

  • finagle-serversets: Zk2Session's AsyncSemaphore which controls the maximum
    concurrent Zk operations is configurable (GlobalFlag c.t.f.serverset2.zkConcurrentOperations).
    [3160a815](https://github.com/twitter/finagle/commit/3160a815c2552773a67d834841b029dca5ba0122)

  • finagle-mysql: Address CursoredStatement usability from Java via
    CursoredStatement.asJava(). Through this, you can use the API with
    varargs and Java 8 lambdas. f67978aa

  • finagle-toggle: Improved Java compatiblity for ToggleMap and Toggle. 16dbe170

  • finagle-toggle: StandardToggleMap.apply and StandardToggleMap.registeredLibraries now
    use ToggleMap.Mutable to better support mutating the underlying mutable ToggleMap.
    8b136a22

Breaking API Changes

  • finagle-mux: With the introduction of the push-based mux client, we've
    removed the need for the optimized c.t.f.Mux.Netty4RefCountingControl
    MuxImpl, which has been removed. 35980463

  • finagle-mysql: c.t.f.mysql.Client.ping now returns a Future[Unit]
    instead of the broad Future[Result] ADT. 2f3650cf

  • finagle-toggle: Changed ToggleMap.Mutable from a trait to an abstract class, and
    ToggleMap.Proxy no longer extends ToggleMap, but now has a self-type that conforms to
    ToggleMap instead. 16dbe170

Runtime Behavior Changes

  • finagle-core: Add c.t.f.SslException to better model exceptions related to SSL/TLS.
    The c.t.f.ChannelException.apply method will now wrap javax.net.ssl.SSLExceptions in
    c.t.f.SslException. 955a0b3e

  • finagle-core: MethodBuilder metrics now include failures.
    f58ab46f, f58ab46f

  • finagle-http: ServerAdmissionControl is circumvented for HTTP requests that have
    a body unless the request contains the header 'finagle-http-retryable-request' since
    it cannot be known whether the client can actually retry them, potentially resulting
    in depressed success rates during periods of throttling. 4377f02a

  • finagle-http2: Clients and servers no longer attempt a cleartext upgrade if the
    first request of the HTTP/1.1 session has a body. bf09dd4c

  • finagle-thriftmux: The push-based client muxer is now the default muxer implementation.
    The push-based muxer has better performance and a simpler architecture. cc333151

  • finagle-toggle: ToggleMap.Proxy#underlying is now public, and ToggleMap.Proxy
    participates in ToggleMap.components. 8b136a22

Bug Fixes

  • finagle-base-http: Concurrent modification of the c.t.f.http.DefaultHeaderMap could
    result in an infinite loop due to HashMap corruption. Access is now synchronized to avoid
    the infinite loop. aa73d24d

  • finagle-core: FailureFlags that have their flags set modified will now
    retain the original stack trace, suppressed Throwables, and cause when possible.
    f4543472

  • finagle-memcached: Added the missing support for partial success for the batch
    operations in the new PartitioningService based Memcached client. 970af633

  • finagle-thrift: Removed copied libthrift files. 9deb18b4

  • finagle-thrift/thriftmux: Server side per-endpoint statsFilter by default is disabled now.
    It can be set via c.t.f.thrift.RichServerParam or a with-method as
    Thrift{Mux}.server.withPerEndpointStats. 7b0281c5