Yufan Gong


Posted February 5, 2018

🏮 February 2018 Release Notes - Version 18.2.0

Happy Lunar New Year! The February release is here.

Finagle 18.2.0, Finatra 18.2.0, Scrooge 18.2.0, TwitterServer 18.2.0, and Util 18.2.0.


New Features

  • finagle-core: Add orElse to allow composition of FailureAccrualPolicys. 8c1e718e

  • finagle-core: c.t.f.http.MethodBuilder now exposes a method newService without a methodName to create a client. c.t.f.thriftmux.MethodBuilder now exposes a method servicePerEndpoint without a methodName to create a client. d8e010d6

  • finagle-thriftmux: Expose the underlying configured client label in the c.t.finagle.thriftmux.MethodBuilder. 653e2696

Bug Fixes

  • finagle-http2: http2 servers no longer leak ping bodies. 02841dfd


  • finagle-core: c.t.finagle.ssl.Ssl and related classes have been deprecated. They were replaced as the primary way of using SSL/TLS within Finagle in release 6.44.0 (April 2017). Please migrate to using c.t.f.ssl.client.SslClientEngineFactory or c.t.f.ssl.server.SslServerEngineFactory instead. 0b8a2890

Breaking API Changes

  • finagle-base-http: c.t.f.h.codec.HttpCodec has been moved to the finagle-http project. 350953ae

  • finagle base-http: c.t.f.h.Request.multipart has been removed. Use c.t.f.h.exp.MultipartDecoder instead. b9d71e36

  • finagle-http: Split the toggle ‘c.t.f.h.UseH2C’ into a client-side toggle and a server-side toggle, named ‘c.t.f.h.UseH2CClients’, and ‘c.t.f.h.UseH2CServers’, respectively. 0d960398

Runtime Behavior Changes

  • finagle-core: Finagle clients with retry budgets or backoffs should no longer have infinite hash codes. 88e7bea9



  • inject-thrift-client: Add methods to c.t.inject.thrift.filters.ThriftClientFilterChain to allow Tunable timeouts and request timeouts. 72664be4

  • inject-thrift-client: Add idempotent and nonIdempotent methods to c.t.inject.thrift.ThriftMethodBuilder, which can be used to configure retries and the sending of backup requests. 7868964d

  • inject-thrift-client: Add c.t.inject.thrift.modules.ServicePerEndpointModule for building ThriftMux clients using the thriftmux.MethodBuilder. 42ef3bcc


  • inject-thrift: Update c.t.inject.thrift.PossibleRetryable to specify a ResponseClassifier and update usages in inject-thrift-client to use it. 582d46bc

  • inject-thrift-client: Un-deprecate c.t.inject.thrift.modules.ThriftClientModule and update for parity with ServicePerEndpointModule in regards to ThriftMux client configuration. Update documentation. Rename ServicePerEndpointModule to the more descriptive and consistently named ThriftMethodBuilderClientModule. c4dc773e


  • scrooge-generator: Add asClosable method to ServicePerEndpoint and ReqRepServicePerEndpoint interfaces as well. 597864ac

  • scrooge-generator: Remove unused functionToService and serviceToFunction methods along with ServiceType and ReqRepServiceType type aliases in order to simplify code generation.

NOTE: This functionality can be manually replicated by users if/when needed to convert between a Function1 and a Finagle Service. 2d25eb25

  • scrooge-generator: Scala generated client now has a asClosable method returns c.t.u.Closable, client now can be closed by calling client.asClosable.close. Note that asClosable won’t be generated if it is also defined by the user. 1fa4f0c6

  • scrooge-generator: Renamed subclasses of com.twitter.scrooge.RichResponse: ProtocolExceptionResponse, SuccessfulResponse, and ThriftExceptionResponse. These case classes are for representing different response types and should be only used by the generated code. 2194e77d



  • Removed ‘finagle-zipkin-core’ as a depdendency since there was no code in twitter-server which used it. 9f5b8858


New Features:

  • util-core: Added implicit conversion for percentage specified as “x.percent” to a fractional Double in c.t.conversions.percent. e573d263

  • util-tunable: Add deserializer for c.t.u.StorageUnit to JsonTunableMapper d320545a

Runtime Behavior Changes:

  • util-app: When c.t.a.App.exitOnError is called, it now gives close an opportunity to clean up resources before exiting with an error. aa32eb16