Finagle v20.12.0 Release Notes
-
๐ New Features
* finagle-benchmark: Add a benchmark for LocalContext. ``PHAB_ID=D588632`` * finagle-core: Add a new filter, `ClientExceptionTracingFilter`, that records error annotations for completed spans. Annotations include `error`, `exception.type`, and `exception.message`. See https://github.com/open-telemetry/opentelemetry-specification for naming details. ``PHAB_ID=D583001`` * finagle-core: Add a new stat (histogram) that reports how long a task has been sitting in the offload queue. This instrumentation is sampled at the given interval (100ms by default) that can be overridden with a global flag `com.twitter.finagle.offload.statsSampleInterval`. ``PHAB_ID=D571980`` * finagle-core: Add a new experimental flag `com.twitter.finagle.offload.queueSize` that allows to put bounds on the offload queue. Any excess work that can't be offloaded due to a queue overflow is run on IO (Netty) thread instead. Put this way, this flag enables the simplest form of backpressure on the link between Netty and OffloadFilter. ``PHAB_ID=D573328`` * finagle-netty4: Add `ExternalClientEngineFactory` to the open source version of Finagle. This `SslClientEngineFactory` acts as a better example of how to build custom client and server engine factories in order to reuse SSL contexts for performance concerns. ``PHAB_ID=D572567`` * ๐ง finagle-core: Provide `com.twitter.finagle.naming.DisplayBoundName` for configuring how to display the bound `Name` for a given client in metrics metadata. ``PHAB_ID=D573905`` * finagle-core: Provide `ClientParamsInjector`, a class that will be service-loaded at run-time by Finagle clients, and will allow generic configuration of all sets of parameters. ``PHAB_ID=D574861`` ๐ฅ Breaking API Changes
๐ finagle-core: Move
DarkTrafficFilter
andAbstractDarkTrafficFilter
from the experimental finagle-exp to supported finagle-core. The package containing these classes changed fromc.t.finagle.exp
toc.t.finagle.filter
.PHAB_ID=D572384
๐ finagle-core, finagle-thrift: Move
ForwardingWarmUpFilter
andThriftForwardingWarmUpFilter
from the experimental finagle-exp to supported finagle-core, and finagle-thrift, respectively. The package containingForwardingWarmUpFilter
changed fromc.t.finagle.exp
toc.t.finagle.filter
, and the package containingThriftForwardingWarmUpFilter
changed fromc.t.finagle.exp
toc.t.finagle.thrift.filter
.PHAB_ID=D573545
finagle-core:
FailureAccrualFactory.isSuccess
has been replaced with the methoddef classify(ReqRep): ResponseClass
to allow expressing that a failure should be ignored.PHAB_ID=D571093
โ Runtime Behavior Changes
* 0๏ธโฃ finagle-core: Use Scala default implementation to calculate Hashcode and equals method for ServiceFactoryProxy. ``PHAB_ID=D569045`` * โก๏ธ finagle: Update build.sbt to get aarch64 binaries and try the fast path acquire up to 5 times before failing over to the AbstractQueuedSynchronizer slow path in NonReentrantReadWriteLock for Arm64. ``PHAB_ID=D589167`` ๐ Bug Fixes ~~~~~~~~~ * ๐ finagle-core: Users should no longer see the problematic `java.lang.UnsupportedOperationException: tail of empty stream` when a `c.t.f.s.RetryPolicy` is converted to a String for showing. ``PHAB_ID=D582199``