June 2021 Release Notes - Version 21.6.0
June release, hot off the press:
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
No Changes
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
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
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