Skip to content
A fault tolerant, protocol-agnostic RPC system
Scala Java Python Ruby Thrift Shell HTML
Latest commit e18de6d @kevinoliver kevinoliver committed with jenkins util-core: Avoid various allocations

There are a handful of places in util where we create
`java.util.concurrent.atomic` objects. Some of these are created often
and have very little concurrent access. There is overhead in creating
the extra object reference.


For these candidates we can instead use `synchronization` in order to
avoid the object allocations.

* `Future.monitored`
* `Promise.attached`
* `Timer.doAt`


Less allocations and about the same or better performance.

Failed to load latest commit information.
bin csl: Fix TravisCI builds
doc finagle-netty4: introduce netty4 listener
finagle-benchmark-thrift/src/main/thrift finagle-benchmark: Move the thrift out to work around the nested obje…
finagle-benchmark maven layout goes away
finagle-cacheresolver maven layout goes away
finagle-commons-stats maven layout goes away
finagle-core util-core: Avoid various allocations
finagle-example maven layout goes away
finagle-exception maven layout goes away
finagle-exp maven layout goes away
finagle-http-compat maven layout goes away
finagle-http maven layout goes away
finagle-kestrel maven layout goes away
finagle-mdns maven layout goes away
finagle-memcached maven layout goes away
finagle-mux maven layout goes away
finagle-mysql maven layout goes away
finagle-native maven layout goes away
finagle-netty4 finagle-core: Netty 4 socket channel transport
finagle-ostrich4 maven layout goes away
finagle-redis maven layout goes away
finagle-serversets finagle-serversets: notify Stabilizer timers in separate threads
finagle-spdy maven layout goes away
finagle-stats maven layout goes away
finagle-stream maven layout goes away
finagle-test maven layout goes away
finagle-testers maven layout goes away
finagle-thrift maven layout goes away
finagle-thriftmux maven layout goes away
finagle-validate maven layout goes away
finagle-zipkin maven layout goes away
project finagle-core: Netty 4 socket channel transport
site site: Update Finatra project link and blurb
.gitignore fix broken WatermarkPool link in doc, also add *.pyc to .gitignore
.mailmap add a .mailmap
.travis.yml csl: Add Gitter badges and fix HipChat template and skip flaky tests Add Brigade to adopters list
CHANGES finagle-core: Netty 4 socket channel transport
CONFIG.ini finagle: fix config for docbird csl: Add Gitter badges and fix HipChat template and skip flaky tests
CONTRIBUTORS [split] finagle-doc: beginnings of a finagle user's guide
GROUPS [split] Use new git-review with simplified OWNERS/GROUPS
LICENSE Project scaffolding
OWNERS Goodbye csl: Add Gitter badges and fix HipChat template and skip flaky tests [split] finagle-core: introduce Transports and Dispatchers
pushsite.bash [split] birdcage: Upgrading scalatest + scalacheck
sbt Fix sbt jar retrieval


Build status Coverage status Project status Gitter Maven Central


This project is used in production at Twitter (and many other organizations), and is being actively developed and maintained.

Finagle logo

Getting involved

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 extensive documentation, please see the user guide and API documentation websites. Documentation improvements are always welcome, so please send patches our way.


The following are a few of the companies that are using Finagle:

For a more complete list, please see our adopter page. If your organization is using Finagle, consider adding a link there and sending us a pull request!


The master branch of this repository contains the latest stable release of Finagle, and weekly snapshots are published to the develop branch. In general pull requests should be submitted against develop. See for more details about how to contribute.

Something went wrong with that request. Please try again.