Bonnie Eisenman

@brindelle

Posted August 12, 2020

August 2020 Release Notes - Version 20.8.0

Another month, another release. 😺 Here’s the August release of Finagle, Finatra, Scrooge, Twitter Server, and Util.

Finagle

Runtime Behavior Changes

  • finagle-netty4-http: Post, Put, Patch non-streaming outbound requests with empty bodies will be added the Content-Length header with value 0. 9ce18e85
  • finagle-core: A ServiceFactory created by ServiceFactory.const/constant propagates the wrapped service status. 3347c095
  • finagle-http: c.t.f.http.filter.PayloadSizeFilter no longer adds an annotation on each streaming chunk and instead aggregates the byte count and adds a single record on stream termination. e87b1c35
  • finagle-zipkin-scribe: zipkin scribe log_span prefix replaced with scribe. zipkin-scribe/scribe/<stats>. 5b100ee9

New Features

  • finagle-core: introduce type-safe ReqRep variant 459daf68
  • finagle-core: Added a new variant of Filter.andThenIf which allows passing the parameters as individual parameters instead of a Scala tuple. fb071d9b
  • finagle-core: new metric (counter) for traces that are sampled. finagle/tracing/sampled 1d6503e0
  • finagle-netty4: Add the c.t.f.netty4.Netty4Listener.MaxConnections param that can be used to limit the number of connections that a listener will maintain. Connections that exceed the limit are eagerly closed. 9991aae3
  • finagle-thrift: Added java-friendly c.t.f.thrift.exp.partitioning.ClientHashingStrategy and c.t.f.thrift.exp.partitioning.ClientCustomStrategy create methods, and added java-friendly c.t.f.thrift.exp.partitioning.RequestMergerRegistry#addRequestMerger and c.t.f.thrift.exp.partitioning.ResponseMergerRegistry#addResponseMerger to make partitioning easier to use from Java. e0d78d14

Breaking API Changes

  • finagle-core: ReqRep can no longer be created via new ReqRep(..). Please use ReqRep.apply(..) instead. 459daf68
  • finagle-thrift: Updated the c.t.f.thrift.exp.partitioning.ClientHashingStrategy and the c.t.f.thrift.exp.partitioning.ClientCustomStrategy to take constructor arguments instead of needing to override methods on construction. e0d78d14
  • finagle-zipkin-core: Removed unused statsReceiver constructor argument from RawZipkinTracer. 5b100ee9

Finatra

Added

  • inject-app: Add more Java-friendly constructors for the TestInjector. 2408860e

Changed

  • inject-modules: Improve Java usability: rename apply to get for StatsReceiverModule and LoggerModule. Add get methods for other TwitterModule singleton objects. (BREAKING API CHANGE) 0cbbf8ab
  • inject-core: Deprecate c.t.inject.Resettable (no replacement) and c.t.inject.TestTwitterModule. Users should prefer the #bind[T] DSL over usage of the TestTwitterModule. f95fe7cb

Fixed

  • inject-server: Fix EmbeddedTwitterServer to return StartupTimeoutException when server under test fails to start within max startup time. 3eb0cd85

Util

New Features

  • util-stats: Store MetricSchemas in InMemoryStatsReceiver to enable further testing. c305712e
  • util-core: c.t.u.Var.Observer is now public. This allows scala users to extend the Var trait as has been the case for Java users. ee1cebcf
  • util-core: Added two new methods to c.t.u.Duration and c.t.u.Time: .fromHours and .fromDays. 955f2ce9

Runtime Behavior Changes

  • util-app: Treat empty strings as empty collections in Flag[Seq[_]], Flag[Set[_]], Flag[java.util.List[_]], and Flag[java.util.Set[_]]. They were treated as collections with single element, empty string, before. 43f83d22

Twitter Server

No Changes

Scrooge

  • scrooge: replace deprecated ScalaTest 3.0 API with ScalaTest 3.1/3.2 API. 9878247b
  • scrooge-core: Change c.t.scrooge.ThriftStructMetaData from an abstract class to a trait to allow for mixin to classes that already extend other classes. 982e8530