Finagle v18.5.0 Release Notes
-
๐ 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. ``PHAB_ID=D157942`` - Pass `SameSite.Lax` to the `Cookie` to add the "Lax" attribute. - Pass `SameSite.Strict` to the `Cookie` to add the "Strict" attribute. * 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`. ``PHAB_ID=D160298`` * 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]`. ``PHAB_ID=D156926``, ``PHAB_ID=D157360`` * 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. ``PHAB_ID=D160215`` * finagle-serversets: Zk2Session's AsyncSemaphore which controls the maximum concurrent Zk operations is configurable (GlobalFlag c.t.f.serverset2.zkConcurrentOperations). ```PHAB_ID=D157709``` * finagle-mysql: Address `CursoredStatement` usability from Java via `CursoredStatement.asJava()`. Through this, you can use the API with varargs and Java 8 lambdas. ``PHAB_ID=D158399`` * finagle-toggle: Improved Java compatibility for `ToggleMap` and `Toggle`. ``PHAB_ID=D164489`` * finagle-toggle: `StandardToggleMap.apply` and `StandardToggleMap.registeredLibraries` now use `ToggleMap.Mutable` to better support mutating the underlying mutable `ToggleMap`. ``PHAB_ID=D167046`` ๐ฅ 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.PHAB_ID=D141010
finagle-mysql:
c.t.f.mysql.Client.ping
now returns aFuture[Unit]
instead of the broadFuture[Result]
ADT.PHAB_ID=D160215
finagle-toggle: Changed
ToggleMap.Mutable
from a trait to an abstract class, andToggleMap.Proxy
no longer extendsToggleMap
, but now has a self-type that conforms toToggleMap
instead.PHAB_ID=D164489
โ 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.SSLException`s in `c.t.f.SslException`. ``PHAB_ID=D158344`` * finagle-core: MethodBuilder metrics now include failures. ``PHAB_ID=D167589``, ``PHAB_ID=D168095`` * 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. ``PHAB_ID=D134209`` * โฌ๏ธ finagle-http2: Clients and servers no longer attempt a cleartext upgrade if the first request of the HTTP/1.1 session has a body. ``PHAB_ID=D153986`` * 0๏ธโฃ finagle-thriftmux: The push-based client muxer is now the default muxer implementation. The push-based muxer has better performance and a simpler architecture. ``PHAB_ID=D158134`` * finagle-toggle: `ToggleMap.Proxy#underlying` is now public, and `ToggleMap.Proxy` participates in `ToggleMap.components`. ``PHAB_ID=D167046`` ๐ Bug Fixes ~~~~~~~~~ * 0๏ธโฃ 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. ``PHAB_ID=D159250`` * finagle-core: `FailureFlags` that have their flags set modified will now retain the original stack trace, suppressed Throwables, and cause when possible. ``PHAB_ID=D160402`` * ๐ finagle-memcached: Added the missing support for partial success for the batch operations in the new PartitioningService based Memcached client. ``PHAB_ID=D161249`` * ๐ finagle-thrift: Removed copied libthrift files. ``PHAB_ID=D165455`` * 0๏ธโฃ 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`. ``PHAB_ID=D167433``