Posted by Moses Nakamura on November 17, 2017
It’s November, and you know what that means! Library releases!!! We’re now publishing
with sbt 1.0.x, and we now also publish sbt-scrooge-plugin for sbt 1.0.x. We are also
continuing to publish sbt-scrooge-plugin for sbt 0.13.x.
Posted by Stefan Lance on November 2, 2017
If you’ve ever tried to debug asynchronous code written with Twitter
you may have found that the stack trace isn’t always helpful. The stack trace
at a given point in the program includes the active stack frames and thus shows
the chain of...
Posted by Jordan Parker on October 27, 2017
The October releases have arrived! For this release and hereafter, Finagle, Finatra,
Scrooge, Util, and TwitterServer will be versioned as $year.$month.$patch, as opposed to
$major.$minor.$patch. This means that all project versions will be in sync...
Posted by Kevin Oliver on October 18, 2017
Seven years ago a simple commit got Finagle’s open source repository
started. Finagle began as a means of dealing with the complexity and
fragility of distributed systems issues here at Twitter. While
distributed systems remain complex and it is not...
Posted by Christopher Coco on October 12, 2017
As we move headlong into Autumn we thought this might be a good time to take a
quick look back at some of the work from the previous quarter in
Util and preview what we’re working on this
quarter and beyond...
Posted by Kevin Oliver on September 7, 2017
The September releases are here.
Finagle 7.1.0, Finatra 2.13.0, Scrooge 4.20.0, TwitterServer 1.32.0, and Util 7.1.0.
Posted by Daniel Schobel on August 17, 2017
The August release is here and brings a major version bump for both Finagle and Util to v7! 🍰🍰🍰
Over the last few years Finagle has had an extensive internal overhaul to support Netty 4 along with a rewrite of all its protocols so now as the last...
Posted by Kevin Oliver on July 12, 2017
It’s time to take a look back at what went down in
Finatra and related libraries
over the past few months and get an idea of what’s to come. This
(apologies for missing May) as well as the upcoming 7.0.0...
Posted by Eitan Adler on June 9, 2017
We have integrated CLA Assistant with the Finagle Github repository.
Due to lack of discoverability, not everyone has been consistent about signing Twitter’s existing CLA. We believe that this will be less of a burden than manually checking CLAs against...
Posted by Kevin Oliver on April 6, 2017
As mentioned in our spring planning notes, we are sunsetting a number of modules that have been unsupported or exist in a zombie-like state.
Posted by Kevin Oliver on March 20, 2017
The team working on Finagle, Finatra, and related libraries met last week and did our planning for the next three months. These are high-level goals and as such, have varying degrees of confidence and certainty.
In the spirit of Spring cleaning:
Posted by Kevin Oliver on March 14, 2017
The March releases are hot off the printing press for Finagle 6.43.0, Finatra 2.9.0, Scrooge 4.15.0, TwitterServer 1.28.0, and Util 6.42.0.
Here’s a few of the highlights:
See accompanying blog post for details.
Posted by Vladimir Kostyukov on February 6, 2017
It’s been quite a while since the Netty 4 migration in Finagle was initially
announced. We’ve travelled a long way and are happy to announce that there is now (as of
Finagle 6.42) support for Netty 4 transports in most of the protocols: Thrift, ThriftMux...
Posted by Jillian Crossley on December 23, 2016
As the year ends, we’ve got an exciting new release for you! Here’s a quick rundown
of what we’ve been up to.
Scala 2.12 Support is Here
Finagle, Util, Ostrich, Scrooge, and Twitter-Server are all now cross-compiled for Scala 2.11 and 2.12(!)
Posted by Bryce Anderson on November 29, 2016
Historically Finagle has depended on a forked org.apache.thrift libthrift
version 0.5.x, which happens to not be published to the Central
Repository. We have published the artifact to maven.twttr.com,
but this requires users to add the maven.twttr...
Posted by Kevin Oliver on September 1, 2016
💔 SPOILER ALERT: you do not want to go to this party 💔
Blocking Finagle’s event loop via calls to
will cause your application to experience unexpected slowness, a
decrease in throughput, and potentially deadlocks. Find...
Posted by Vladimir Kostyukov on July 8, 2016
This is Finagle’s first release only for Java 8 and Scala 2.11. Since the previous release, the team
has been focusing on the Netty 4 migration as well as eliminating some technical debt.
Towards Netty 4
The team is firing on all cylinders towards...
Posted by Kevin Oliver on May 19, 2016
This Wireshark dissector provides basic decoding of all
Mux messages including:
- Frame length
- Message type
- Tag number
Don’t know about Wireshark
Follow the links for introductions.
While this was released as part of Finagle 6.33.0 we...
Posted by Kevin Oliver on April 20, 2016
The upcoming releases of our family of projects will be the final release for
Scala 2.10 and Java 7. These should be:
- Finagle 6.35.0
- Finatra 2.1.6
- Util 6.34.0
- Scrooge 4.7.0
- TwitterServer 1.20.0
- Ostrich 9.18.0
Java 7 reached its end-of-life
Posted by Vladimir Kostyukov on March 11, 2016
This release we’ve been focusing on improving both overall stability of Finagle components and
debugging features. We also reverted a patch that cased duplicate tag error that looks as
com.twitter.finagle.mux.ServerError: Duplicate tag 6
Posted by Moses Nakamura on February 15, 2016
tl;dr AsyncStream is replacing Spool.
Big shoutout to Neuman Vong, who designed and built AsyncStream soup to nuts ✧٩(•́⌄•́๑)
We know and love Spool, the Twitter util tool for asynchronous object streaming. The main
advantages of asynchronous stream...
Posted by Kevin Oliver on February 9, 2016
Finagle’s new response classifiers improve client’s avoidance of
faulty nodes thus increasing your success rate. To get this benefit,
you must wire up the application’s rules into your clients and how to
do so is explained below.
First, a pop...
Posted by Kevin Oliver on February 8, 2016
Ever had your service attacked by a retry storm from your clients? Or
your clients’ clients? Or has your service ever been the attacker in
one of those situations?
To help you avoid this, in release 6.31 we’ve introduced the notion of...
Posted by Vladimir Kostyukov on February 5, 2016
In this milestone, we’ve been focusing on two major directions:
- Improving the user experience by providing friendly APIs and updating docs
- Continuing to improve Finagle’s resiliency
There is a new user-friendly API for configuring...
Posted by Nik Shkrob on September 10, 2015
We’ve released Service-per-endpoint support for Scala Thrift clients generated by Scrooge. This change has been introduced in Scrooge 4.0.0.
This allows the use of Finagle filters with Thrift services to do retries, timeouts, etc. in a Finagle-idiomatic...
Posted by Travis Brown on July 29, 2015
FinagleCon is just over two weeks away, and we’re looking for a
few attendees who are interested in giving lightning talks to kick off the
afternoon. The talks will be capped at five minutes and can be on a wide range
of Finagle-related topics: how you’re using Finagle, suggested changes,
far-fetched experiments, integration with other libraries or tools, etc.
Posted by Travis Brown on July 16, 2015
Most of Twitter’s open source projects for the JVM are published to Maven
Central, but for various reasons a few are still published to
maven.twttr.com, a Maven repository that is hosted by Twitter. While Finagle
itself is in Maven Central, some of its subprojects and some
Finagle-related libraries and tools require dependencies from
We’re actively working to eliminate the need for this separate repository, but
we don’t have a definite timeline for moving everything to Maven Central, and so
this week we have enabled secure access to the repository, which was previously
only available over unsecured HTTP.
Posted by Travis Brown on July 15, 2015
We’re pleased to announce that this year’s FinagleCon will now be
hosted at Twitter’s new One 10th Street Expansion in San Francisco.
We believe that this location will be more convenient than the Kaiser Center in
Oakland for many attendees, and we’re looking forward to showing off this brand
Posted by Travis Brown on June 11, 2015
Yesterday we opened registration and the call for participation for
FinagleCon, a new annual conference for the Finagle community.
This year’s conference will be a Scala by the Bay event hosted
at Twitter HQ in San Francisco, and will take place on Thursday,
August 13, the day before Scala by the Bay begins.
The conference program will include keynotes by Twitter’s
Marius Eriksen and SoundCloud’s Phil Calçado, talks by Finagle
adopters and contributors, and workshops and tutorials on a range of
Finagle-related topics (including Finatra and Finch).
Posted by Travis Brown on February 6, 2015
Most internal services at Twitter speak the Thrift protocol, which
provides many benefits—once you’ve defined your data types and service
interfaces, for example, it’s possible to create bindings for a wide range of
programming languages, and Twitter’s Scrooge in particular makes
it easy to create high-performance Finagle servers and clients for your Thrift
In some cases, though, it would be more convenient not to have to worry about
things like interface description files, the build system plugins necessary to
generate bindings from them, etc. In particular, being able to define Finagle
services that take arbitrary types as inputs and outputs in a Scala REPL would
make writing tutorials and quickstart projects much more straightforward, and
would enable easier experimentation with other parts of the Finagle API.
Posted by Vladimir Kostyukov on December 10, 2014
At Konfettin we decided to build a REST API backend using a Finagle stack. While it’s possible to do that using pure Finagle abstractions, we ended up writing the Finch library to simplify things and get more suitable building blocks. And it worked well: we shipped the product and got the customers. This library has been running in production for about six months so far and it’s pretty stable and well-tested. This post gives an overview of Finch: explains its core design principles and use cases.
Posted by Travis Brown on October 30, 2014
Part of my role as an open source advocate for Scala projects at Twitter
involves talking to developers outside of Twitter about how we can make
our open source projects
more widely useful and accessible, and one of the most common requests for
Finagle is for more introductory tutorials and examples.
One of the steps we’re taking in this direction is a major overhaul of
which we’ll be moving out of the main Finagle repository and
into its own project under the Finagle organization
on GitHub. At the same time we’ll be
filling out the top-level introduction to the examples (which is currently a
adding more detailed API documentation, providing better example coverage for
and creating a larger set of
to show off our new work on improving Java compatibility.
Posted by Sonja Keserovic on October 20, 2014
Netty 4 was released more than a year
ago and Netty 5 Alpha is
already available. Finagle is still using Netty 3, which is getting outdated
quickly and is preventing us from taking advantage of various performance
improvements in newer versions. It’s also creating additional work for the
Finagle team at Twitter as we need to port important security and performance
fixes back to Netty 3.
Posted by Kevin Oliver on October 7, 2014
For Finagle and its associated libraries,
known internally at Twitter as the Core Systems Libraries, we plan to change
the way we push code to GitHub and publish releases. The other libraries
included are util,
Posted by Moses Nakamura on August 12, 2014
We’re experimenting with a new form of release notes, so that it’s easier to get context on what’s going on in Finagle-land, especially with an eye to letting consumers see what the latest and greatest features are, and providing a little more context around what’s going on.
Finagle is an extensible RPC system for the JVM, used to construct high-concurrency servers. Finagle implements uniform client and server APIs for several protocols, and is designed for high performance and concurrency. Most of Finagle's code is protocol agnostic, simplifying the implementation of new protocols.
For more information, please see the project website
or source code repository,
or get in touch through
our mailing list,
#finagle IRC channel on Freenode.