Hamdi Allam


Posted September 25, 2020

🍁 September 2020 Release Notes - Version 20.9.0

With the start of Fall 🍁, it is only right for a new release of our libraries! Here’s the latest of Finagle, Finatra, Scrooge, TwitterServer, and Util!


New Features

  • finagle-core: Add RelativeName field to Metric Metadata and populate it for client and server metrics. de589ffa
  • finagle-scribe: Add c.t.finagle.scribe.Publisher for publishing messages to a Scribe process. 7723a949

Runtime Behavior Changes

  • finagle: Bump version of Jackson to 2.11.2. 6c6c882a

Bug Fixes

  • finagle-core: The TraceId alternative constructor now forwards the traceIdHigh parameter to the primary constructor. 567e8d66



  • finatra-inject: TestInjector has been reworked to allow users executing modules’ lifecycle callbacks. Specifically, the TestInjector builder API has been moved under TestInjector.Builder to allow TestInjector extends Injector with two new methods: start() and close(). 07bf53fa


  • finatra-kafka-streams: Update and separate the Finatra kafka stream code base which has direct dependency on Kafka 2.2. Separate any code which cannot easily be upgraded to separate build target. 3c78c34d
  • inject-core: c.t.inject.Injector is now an abstract class. Use Injector.apply to create a new instance (versus the new Injector(…) before). 64ba51e9
  • http: Ensure HttpWarmer creates the request exactly the number of times requested and mutates the correct objects. 0a3be376
  • kafka: Replaced the com.twitter.finatra.kafka.TracingEnabled toggle with a GlobalFlag enabling Zipkin tracing for Kafka clients. 0e829aae
  • finatra: Bump version of Jackson to 2.11.2. 94bc773d


  • jackson: Fix issue in the handling of unknown properties. The CaseClassDeserializer only considered the case where the incoming JSON contained more fields than the case class and not the case where the incoming JSON contained less fields than specified in the case class. This has been fixed to ensure that when the fields of the JSON do not line up to the non-ignored case class fields the handling of unknown properties is properly invoked. 9762145d
  • validation: c.t.f.validation.Validator would throw an IndexOutOfBoundsException when trying to validate a case class which contained additional fields that are not included in the constructor parameters. bb342c09


No Changes

Twitter Server

  • Bump version of Jackson to 2.11.2. 86992eab
  • Encode the request URL names in /admin/clients/<client_name> and /admin/servers/<server_name>. 038ce648
  • If a client connecting to an instance of TwitterServer is sending a client certificate, its expiry date (i.e. Not After) is now included as part of the information listed. 18b8b527.

Breaking API Changes

  • Add relative_name field to metrics in the Metrics Metadata endpoint and bump the endpoints version number to 2.0. 8b49adea


New Features

  • util-app: Seq/Tuple2/Map flags can now operate on booleans. For example, Flag[Seq[Boolean]] now works as expected instead of throwing an assert exception (previous behaviour). e4f54d3c

Breaking API Changes

  • util-app: Flaggable.mandatory now takes implicit ClassTag[T] as an argument. This is change is source-compatible in Scala but requires Java users to pass argument explicitly via ClassTag\$.MODULE\$.apply(clazz). b08a02ec

Runtime Behavior Changes

  • util: Bump version of Jackson to 2.11.2. 5d8877db