Vladimir Kostyukov


Posted July 28, 2022

Jul 2022 Release Notes - Version 22.7.0

This release comes with a delay, which was intentional. A few months ago, we’ve decided to slow down our release train and switch from releasing monthly (12 releases a year) to releasing quarterly (4 releases a year).

The next release should have been in November. However, looking at the team’s quite busy schedule throughout the rest of the year, it’s very unlikely we would be able to make time for one more release in 2022. The 2023 Q1 release is looking more realistic.

We’ll continue publishing nightly snapshots (versioned as 22.10.0-SNAPSHOT) and will cut a patch release should any security vulnerabilities be fixed. Otherwise, tune back in 2023!

Finagle 22.7

New Features

  • finagle-thrift: Changing visibility of InputBuffer and OutputBuffer from [finagle] to [twitter]. d56bb847
  • finagle-core: Introduce panic mode in load balancers. Configure the threshold for panic mode to start using withLoadBalancer.panicMode. c6060de8
  • finagle-core: Provide ServerParamsInjector, a class that will be service-loaded at run-time by Finagle servers, and will allow generic configuration of all sets of parameters. f00434c1
  • finagle-memcached: Add new function, newLoadBalancedTwemcacheClient, to create a TwemcacheClient that doesn’t use a partitioning service. eebf0821

Bug Fixes

  • finagle-core: fix issue where Trace.traceLocal and Trace.traceLocalFuture nested traces mistakenly annotate to the parent span. 77a7e774

Breaking API Changes

  • finagle-core: Remove unused DeterministicAperture along with pathways to use weight-unaware aperture loadbalancers. a5004ecc
  • finagle-base-http: Methods for getting/setting Accept, Authorization, Host, Referer, User-Agent, X-Forwarded-For headers were moved from c.t.f.http.Message class to c.t.f.http.Request as these headers are only valid on requests and not on responses. Methods for getting/setting Location, Retry-After, Server, and WWW-Authenticate headers were moved from c.t.f.http.Message class to c.t.f.http.Response as they are only valid on responses and not on requests.
  • finagle-core: Update OffloadFilter.Param API to encourage recommended construction. b684552f
  • finagle-core: Trace.recordLocalSpan is private[this] and no longer protected. 77a7e774
  • finagle-core: “ServiceFactory#status” is abstract and requires implementation in the inherited classes. b2a7f4ea
  • finagle-core: StackTransformer has been renamed to ServerStackTransformer and the symmetric client equivalent (ClientStackTransformer) has been added. For those using the older StackTransformer API you will both need to change the code (fix the extends) __and__ rename the META-INF file from resources/META-INF/services/com.twitter.finagle.StackTransformer to resources/META-INF/services/com.twitter.finagle.ServerStackTransformer in order to have your transformer continue to service-load correctly. f5de196d

Runtime Behavior Changes

  • finagle-core: Changed the default implementation for random and deterministic aperture load balancers to weighted aperture. f67c839c

  • finagle-partitioning: ThriftCustomPartitioningServices now allow fanning out the same request to multiple partitions. 59381065

  • finagle-core: Rename the counter metric loadbalancer/max_effort_exhausted to loadbalancer/panicked. a055f74b

  • finagle: Upgrade to Netty 4.1.76.Final and netty-tcnative 2.0.51.Final. c07a9b0b

  • finagle: Update Jackson library to version 2.13.3 92d39db2

  • finagle: Bump version of lz4-java to 1.8.0. 305c467c

  • finagle: Upgrade to Netty 4.1.78.Final and netty-tcnative 2.0.53.Final to support tls tracing for finagle in [Pixie](https://pixie.dev/). The Pixie changes aren’t complete yet, but upgrading netty is a prerequisite for that. d251883b\

Finatra 22.7


  • inject-utils|inject-thrift: Move package private methods PossiblyRetryable#isCancellation and PossibleRetryable#isNonRetryable in inject-thrift to inject-utils ExceptionUtils as publicly usable methods. These methods are generally useful when processing interrupts on Futures. 3d351450

Runtime Behavior Changes

  • inject-server: Remove deprecated c.t.inject.server.DeprecatedLogging trait. This trait was introduced as a placeholder shim to ensure that JUL util-logging Flags were still defined within a Finatra server such that servers did not fail upon startup if Flag values were being set. The default behavior during Flag parsing is to error if a Flag value is passed for a Flag not defined within the application.

    We have removed the shim and the trait (and thus the Flag definitions), as it is not expected that users use util-logging JUL Flags for logging configuration with Finatra servers since Finatra uses the SLF4J-API. Logging configuration should be done on the choosen SLF4J-API logging implementation. If your server fails to start after this change, please ensure you are not passing values for the JUL util-logging Flags. 5b5ccf4f


  • finatra: Removed kafka and kafka-streams modules from finatra core library.

    Note: We published a stand-alone finatra-kafka client with deprecation announcement to serve as exit pathway for current users.

    Announcement: finagle blog 27e2c9c4


  • finatra: Introduce InMemoryTracer for inspecting Trace information via tests. 0755b77e

Runtime Behavior Changes

  • finatra: Update Jackson library to version 2.13.3 a4065f19

Util 22.7

Breaking API Changes

  • util-stats: SourceRole subtypes have been moved into the SourceRole object to make their relationship to the parent type more clear. 633cf5b0

Runtime Behavior Changes

  • util-jackson: Update Jackson library to version 2.13.3 8c96a442
  • util-jackson: Deserialized case classes with validation on optional fields shouldn’t throw an error. 3b94d2e6
  • util: Update snakeyaml to 1.28 d486a7da

Scrooge 22.7

  • scrooge-generator: Introduce a AnnotatedFieldType to abstract type annotations from FieldType definitions. Currently used to propagate thrift annotations inside of collection types. 59e91e64 2fa68351
  • scrooge-core: c.t.scrooge.ThriftUnion.fieldInfoForUnionClass API for retrieving ThriftStructFieldInfo for a ThriftUnion member class without having to instantiate it. 19809c22
  • scrooge-generator: Add @.generated annotation to Swift generated code 8fd6a089
  • scrooge-generator: Provide a \$STRUCT#unsetFields method to allow bulk unsets aef5029b
  • scrooge-generator: support thrift validations on nested fields that are struct, union, and exception 8bad4dd7

Twitter Server 22.7

  • Admin HTTP server is now on Finagle’s default HTTP protocol version, which supports HTTP/1.1, HTTP/2 cleartext protocol upgrade, HTTP/2 prior-knowledge, and ALPN. 6b9bf60f