Hi Finaglers,
Fall has arrived in the Northern Hemisphere ๐๐๐, and in San Francisco, we are enjoying the light breeze๐and warm sunshineโ๏ธ. Here are some quick highlights of our work from July, August, and September. If you want to keep an ๐ on our most recent updates, please watch our changelogs (Util, Scrooge, Finagle, Twitter-Server, Finatra).
Finatra
We improved HTTP routing backed by a Trie-based data structure to support HTTP 405 (method not allowed) response code and to improve the overall routing performance.
The HTTP JSON @MethodValidation
now supports specifying an optional parameter fields
to state which fields are being evaluated in the validation.
We updated c.t.inject.app.App
to ensure we recurse through the list of TwitterModule
s for
an application only once with the results encapsulated into a new object. As a result, we are able to properly account for all modules and flags correctly and better Java support for creation of TwitterModule
s which include other TwitterModule
s.
Finagle
We have added Backpressure (Flow Control) support to Finagle HTTP/2 clients in order to improve resilience and reduce the likelihood of data overflow scenarios for HTTP/2 clients.
Twitter Server
A prototype of metric metadata endpoint has been shipped. The endpoint exposes type information such as counter, gauge, or histogram for the service metrics. It lives at /admin/exp/metric_metadata
, please give us feedback, we will soon ship a more complete metric metadata endpoint!
Streaming
Introduced improved APIs for steaming JSON over HTTP in Finatra, StreamingResponse
and StreamingRequest
, they are streaming types that enable dynamically generating content and transmitting content in chunks, they read and write streams as JSON. The backing stream can be either Reader or AsyncStream. And the StreamingResponse and StreamingRequest also carry the metadata for the HTTP response and request.
Scala 2.13 Migration and JDK 11 compatibility
With Help from the Open Source Community, Util and Scrooge are upgraded to cross-build with Scala 2.13, see this tweet. Finagle is currently in progress, help wanted!
Util, Scrooge, Twitter-Server, Finagle and Finatra now are JDK 11 Compatible!
Libraries Upgrade
We upgraded several of our libraries to Jackson 2.9.9, and Finagle Netty4 dependency to Netty 4.1.39.Final. For Scala 2.13 compatibility, we also upgraded ScalaTest to 3.0.8, Scala Parser Combinator to 1.1.2 and added Scala Collection Compat as 2.1.2.
Technical Debt
Apache commons-lang is no longer a dependency of Finatra, replaced usages with alternative stdlib methods.
Best,
Yufan and the Core Systems Libraries Team