Ruben Oanta

@rubenoanta

Posted June 22, 2021

June 2021 Release Notes - Version 21.6.0

June release, hot off the press:

Util

New Features

  • util-core: Add ClasspathResource, a utility for loading classpath resources as an optional InputStream. c9da7c43
  • util-jackson: Add com.twitter.util.jackson.YAML for YAML serde operations with a default configured ScalaObjectMapper. Add more methods to com.twitter.util.jackson.JSON 8e964d9e
  • util-jackson: Introduce a new library for JSON serialization and deserialization based on the Jackson integration in Finatra.

    This includes a custom case class deserializer which “fails slow” to collect all mapping failures for error reporting. This deserializer is also natively integrated with the util-validator library to provide for performing case class validations during deserialization. 8aaf226e

Breaking API Changes

  • util-stats: Removed MetricSchema trait (CounterSchema, GaugeSchema and HistogramSchema). StatReceiver derived classes use MetricBuilder directly to create counters, gauges and stats. 2fa17e27

Scrooge

No Changes

Finagle

New Features

  • finagle-core: Introduce Dtab.limited, which is a process-local Dtab that will NOT be remotely broadcast for any protocol, where Dtab.local will be broadcast for propagation on supported protocols. For path name resolution, the Dtab.local will take precedence over the Dtab.limited, if the same path is defined in both, and both take precedence over the Dtab.base. The existing Dtab.local request propagation behavior remains unchanged. 2e06c669
  • finagle-core: Add descriptions to RequestDraining, PrepFactory, PrepConn, and protoTracing modules in StackClient. Add descriptions to preparer and protoTracing modules in StackServer. 1ea1a3eb

Breaking API Changes

  • finagle-memcached: Ketama Partitioned Client has been removed and the Partition Aware Memcached Client has been made the default. As part of this change, com.twitter.finagle.memcached.UsePartitioningMemcachedClient toggle has been removed, and it no longer applies. 2628b84b

Runtime Behavior Changes

  • finagle-core: Broadcast context keys lookups are now case insensitive. This change is backwards compatible as the marshalled key id is unchanged. Although enabled by default, this change will be temporarily sitting behind a toggle, com.twitter.finagle.context.MarshalledContextLookupId that can be used to turn off this change. 69c29093

Deprecations

  • finagle-core: The ServerBuilder pattern has been deprecated. Use the stack server pattern instead. 386171ad

Twitter Server

Runtime Behavior Changes

  • Sort sublinks from Admin UI alphabetically. d8e915d9
  • Added more information on how to enable/disable tracing in admin/tracing UI. d3eb9be6
  • Resize stack module description table based on the width of the window in Downstream Clients and Listening Servers pages in Admin UI. e7b47f37

Finatra

Changed

  • inject-thrift-client (BREAKING API CHANGE): Removed the deprecated c.t.inject.thrift.modules.FilteredThriftClientModule. Please use its successor c.t.inject.thrift.modules.ThriftMethodBuilderClientModule for per-method configuration of a Thrift client. 008d8ca1
  • thrift: Add service_class to Finatra library thrift registry entry. c5159208
  • finatra (BREAKING API CHANGE): Update to use the new util/util-jackson ScalaObjectMapper for case class object mapping. We’ve removed the custom Finatra c.t.finatra.jackson.ScalaObjectMapper and instead now use the c.t.util.jackson.ScalaObjectMapper. Since the c.t.util.jackson.ScalaObjectMapper does not support Joda-Time, backwards compatibility is maintained through usage of the Finatra ScalaObjectMapperModule for obtaining a configured ScalaObjectMapper which will be created with Joda-Time support, though support for Joda-Time in Finatra is deprecated and users should expect for Joda-Time support to be removed in an upcoming release. Users should prefer to use the JDK 8 java.time classes or java.util.Date.

    The finatra/inject c.t.inject.domain.WrappedValue has been removed and users should update to the util/util-core c.t.util.WrappedValue instead.

    The finatra/jackson JsonDiff utility is also removed. Users should switch to the improved version in util/util-jackson: c.t.util.jackson.JsonDiff.

    With the move to the util/util-jackson ScalaObjectMapper we’re also able to clean up some awkward directory structures in Finatra which were necessary because of dependencies. Specifically, the finatra/json-annotations library no longer exists, as @InjectableValue is now an annotation in util/util-jackson-annotations, and the remaining binding annotations @CamelCaseMapper and @SnakeCaseMapper have been moved into finatra/jackson.

    Using the util/util-jackson ScalaObjectMapper also brings Java 8 date/time (JSR310) support via inclusion of the Jackson JavaTimeModule by default.

    Lastly, we’ve also added the YamlScalaObjectMapperModule which can be used in place of the ScalaObjectMapperModule in order to provide a YAMLFactory configured ScalaObjectMapper. 9a168a98

  • inject-utils: Remove deprecated c.t.inject.utils.StringUtils. Users should prefer to use the corresponding methods in com.twitter.conversions.StringOps from util/util-core, instead. 3a063a9e

  • inject-utils: Remove deprecated c.t.inject.utils.AnnotationUtils. Users should instead prefer c.t.util.reflect.Annotations from util/util-reflect. 35b58d34