Finagle v6.45.0 Release Notes
-
๐ New Features
* finagle: Changed dependencies of Netty from 4.1.9 to 4.1.10 and tcnative from 2.0.0 to 2.0.1. ``RB_ID=916056`` * finagle-core: `c.t.f.n.ssl.SslConnectHandler` is no longer exported publicly. It has also been renamed to `c.t.f.n.ssl.client.SslClientConnectHandler`. ``RB_ID=916932`` * finagle-core: c.t.f.factory.ServiceFactoryCache is now exported publicly. ``RB_ID=915064`` * finagle-core: Allow customization of load balancer behavior when no nodes are `Status.Open`. See the user guide for details: https://twitter.github.io/finagle/guide/Clients.html#behavior-when-no-nodes-are-available ``RB_ID=916145`` * finagle-core: The global `c.t.f.naming.NameInterpreter` can be optionally set using service loader. ``RB_ID=917082`` * ๐ finagle-redis: Support scanning over sets and sorted sets with SSCAN and ZSCAN. ``RB_ID=916484`` ๐ Bug Fixes ~~~~~~~~~ * finagle-mux: Disable Netty4RefCountingControl decoder when message fragmentation is enabled. ``PHAB_ID=D58153`` * ๐ finagle: Fixed Java API for `withStack` for Client and Server implementations. Java users now get the correct types for calls such as `c.t.f.Http.client().withStack` and `c.t.f.Http.server().withStack`. ``RB_ID=915440`` * finagle-thrift, finagle-thriftmux: Clients created using `newServiceIface` now use the configured `c.t.f.service.ResponseClassifier` (or `c.t.f.service.ResponseClassifier.Default` if not configured) for per-method stats and usage in `c.t.f.liveness.FailureAccrualFactory` and `c.t.f.stats.StatsFilter`. ``RB_ID=917010`` โ Runtime Behavior Changes
0๏ธโฃ finagle: Add a floor of 8 to the default values of the flags
c.t.f.netty3.numWorkers
andc.t.f.netty4.numWorkers
.RB_ID=916465
0๏ธโฃ finagle-core:
c.t.f.util.DefaultTimer
is decoupled from Netty 3 and is loaded via theLoadService
machinery. If no timers are available on the class path, theJavaTimer
instead is used instead. This ony affects direct usages ofDefaultTimer
as all Finagle protocols are using Netty 4HashedWheelTimer
at this point.RB_ID=915924
finagle-core: The load balancer implementations no longer close the endpoint resources when they are closed. Instead, they treat them as externally managed resources and expect the layers above to manage them. No change is required if using the Balancers in the context of a Finagle client. If that's not the case, however, managing the life cycle of the passed in endpoints is necessary.
RB_ID=916415
finagle-core: Aperture load balancers now expire idle sessions which fall out of the aperture window.
RB_ID=916508
0๏ธโฃ finagle-http: Uses Netty 4 as the default transport implementation. Use
.configured(Http.Netty3Impl)
to switch implementation over to Netty 3.PHAB_ID=D58698
RB_ID=917936
finagle-memcached: If the client decoder detects a protocol failure, the ClientTransport will close the connection.
RB_ID=917685
๐ finagle-netty4:
poolReceiveBuffers
toggle is removed (suppressed byUsePooling
).RB_ID=917912
finagle-http: To conform to RFC 2616, a message body is NO LONGER sent when 1xx, 204 and 304 responses are returned. To conform with RFC 7230, a Content-Length header field is NOT sent for 1xx and 204 responses. Both rules are enforced even if users intentionally add body data or the header field for these responses. If violation of these rules is detected then an error message is logged.
RB_ID=917827
๐ฅ Breaking API Changes
* ๐ finagle: `$protocol.Client.params/stack` and `$protocol.Server.params/stack` are removed, use similar methods on instances instead: `$protocol.client.params/stack` and `$protocol.server.params/stack` instead. ``RB_ID=915703`` * ๐ finagle-core: Remove deprecated `c.t.f.builder.ClientBuilder.tracerFactory`. Use `c.t.f.builder.ClientBuilder.tracer` instead. Remove deprecated `c.t.f.tracing.Tracer.Factory`. Use `c.t.f.tracing.Tracer` instead. ``RB_ID=915481`` * ๐ finagle-core: Remove deprecated `c.t.f.Deadline`. Use `c.t.f.context.Deadline` instead. ``RB_ID=915550`` * ๐ finagle-core: Remove deprecated `c.t.f.builder.ClientBuilder.cluster` and `c.t.f.builder.ClientBuilder.group`. Use `c.t.f.builder.ClientBuilder.dest` instead. ``RB_ID=915098`` * ๐ finagle-core: Remove deprecated `c.t.f.tracing.Trace.recordRpcName`. Use `c.t.f.tracing.Trace.recordRpc` and `c.t.f.tracing.Trace.recordServiceName` instead. ``RB_ID=916426`` * ๐ finagle-core: Remove deprecated `c.t.f.builder.Cluster`. Use `com.twitter.finagle.Name` to represent clusters instead. ``RB_ID=916162`` * finagle-core: LoadBalancerFactory now takes an EndpointFactory which is an extension of ServiceFactory that carries an address and has the ability to be rebuilt. ``RB_ID=916956`` * ๐ finagle-base-http: Remove deprecated `c.t.f.http.Message.ContentTypeWwwFrom`. Use `c.t.f.http.Message.ContentTypeWwwForm` instead. ``RB_ID=915543`` * ๐ finagle-exception: Remove deprecated `c.t.f.exception.Reporter.clientReporter` and `c.t.f.exception.Reporter.sourceReporter`. Use `c.t.f.exception.Reporter.monitorFactory` instead. ``RB_ID=916403`` * ๐ finagle-http: Remove deprecated `c.t.f.http.HttpMuxer.pattern`. Specify a route using `c.t.f.http.HttpMuxer.route(pattern, this)` instead. ``RB_ID=915551`` * ๐ finagle-http: Remove deprecated `c.t.f.http.filter.ValidateRequestFilter`. Create a custom filter if this behavior is needed. ``RB_ID=915548`` * ๐ finagle-kestrel: Remove deprecated methods on `c.t.f.kestrel.MultiReader`: - `apply(cluster: Cluster[SocketAddress], queueName: String)` - `apply(clients: Seq[Client], queueName: String)` - `apply(handles: ju.Iterator[ReadHandle])` - `newBuilder(cluster: Cluster[SocketAddress], queueName: String)` - `merge(readHandleCluster: Cluster[ReadHandle])` Use the `c.t.f.Var[Addr]`-based `apply` methods on `c.t.f.kestrel.MultiReaderMemcache` or `c.t.f.kestrel.MultiReaderThriftMux` instead. ``RB_ID=914910`` * ๐ finagle-kestrel: Removed from the project. ``RB_ID=915221`` https://finagle.github.io/blog/2017/04/06/announce-removals/ * ๐ finagle-mdns: Removed from the project. ``RB_ID=915216`` https://finagle.github.io/blog/2017/04/06/announce-removals/ * ๐ finagle-memcached: Remove deprecated `c.t.f.memcached.BaseClient.cas` methods. Use `c.t.f.memcached.BaseClient.checkAndSet` instead. ``RB_ID=914678`` * finagle-memcached: `c.t.f.memcached.protocol.text.Encoder` object is now private. ``RB_ID=917214`` * finagle-memcached: Make memcached Response subtypes with no fields case objects. ``RB_ID=917137`` * ๐ finagle-mysql: Remove deprecated methods on `c.t.f.Mysql`: - `withCredentials`; use `c.t.f.Mysql.client.withCredentials` instead - `withDatabase`; use `c.t.f.Mysql.client.withDatabase` instead - `withCharset`; use `c.t.f.Mysql.client.withCharset` instead - `configured`; use `c.t.f.Mysql.client.configured` instead ``RB_ID=916418`` * ๐ finagle-native: Removed from the project. ``RB_ID=915204`` https://finagle.github.io/blog/2017/04/06/announce-removals/ * finagle-netty4: `AnyToHeapInboundHandler` is gone. Use `BufCodec` while designing new Finagle protocols. ``RB_ID=915251`` * ๐ finagle-ostrich4: Removed from the project. ``RB_ID=915327`` https://finagle.github.io/blog/2017/04/06/announce-removals/ * ๐ finagle-redis: `ChannelBuffer` methods and converters are removed. Use `Buf`-based API instead. Removed APIs: ``RB_ID=916015`` - `c.t.f.redis.NettyConverters` - `c.t.f.redis.util.StringToChannelBuffer` - `c.t.f.redis.Client.watch(Seq[ChannelBuffer])` * ๐ finagle-stream: Removed from the project. ``RB_ID=915200`` https://finagle.github.io/blog/2017/04/06/announce-removals/ * ๐ finagle-thrift: Remove deprecated `c.t.f.thrift.transport.netty3.ThriftServerBufferedCodec` and `c.t.f.thrift.transport.netty3.ThriftServerBufferedCodecFactory`. Use the `c.t.f.Thrift` object to build a server. ``RB_ID=915656`` * ๐ finagle-thriftmux: Remove deprecated `c.t.f.ThrifMux.withClientId`. Use `c.t.f.ThriftMux.client.withClientId`. Remove deprecated `c.t.f.ThrifMux.withProtocolFactory`. Use `c.t.f.ThriftMux.client.withProtocolFactory`. ``RB_ID=915655``