Skip to content
A fault tolerant, protocol-agnostic RPC system
Scala Java Python Ruby Thrift Shell Other
Latest commit 5d2cb2a Jun 29, 2016 @atollena atollena committed with jenkins finagle-core: Use InetResolver in the /$/inet Namer
Problem
--

Names of the form `/$/inet` resolve hostnames via a call to `new
InetSocketAddress`.  This constructor can block on DNS resolution, potentially
inside a finagle thread. In addition, resolution is only performed once when
using `/$/inet`. If DNS configuration changes for this name, changes are never
surfaced in the resulting address.  The logic to work around those problems
already exists in `InetResolver`, but `/$/inet` names do not use it.

Solution
--

Use InetResolver when resolving `/$/inet`, causing resolution to happen in a
separate thread pool.  To avoid timing issues in tests, explicitly use a local
address with `/$/inet/localhost/<port>` and `/$/inet/<port>`.

Result
--

DNS resolution for `/$/inet` names are performed in a thread pool, and DNS
configuration changes are taken into consideration.

RB_ID=835411
Failed to load latest commit information.
.github Add PULL_REQUEST_TEMPLATEs Mar 10, 2016
bin Make (some of) CI Green Again May 16, 2016
doc finagle-docs: Add section on HTTP/SOCKS5 proxies to Clients.rst Jun 20, 2016
finagle-benchmark-thrift/src/main/thrift finagle-benchmark: Move the thrift out to work around the nested obje… Oct 12, 2015
finagle-benchmark finagle-core: Delegate Trace.isActivelyTracing decision to the underl… Jun 27, 2016
finagle-commons-stats source: fix more unused imports for scala 2.11.8 Mar 29, 2016
finagle-core finagle-core: Use InetResolver in the /$/inet Namer Jun 29, 2016
finagle-example finagle-redis: Remove deprecated methods on Client Jun 27, 2016
finagle-exception maven layout goes away Nov 30, 2015
finagle-exp [Finagle-exp; DarkTrafficFilter] Change DarkTrafficFilter to forward … Jun 6, 2016
finagle-http-compat finagle-http: Request and Response don't proxy netty Req/Rep Apr 11, 2016
finagle-http finagle-http: add IoEngineImpl to registry Jun 27, 2016
finagle-http2 finagle-http2: Adds {client,server}-specific tests Jun 29, 2016
finagle-integration finagle-http: Removes duplicates for StreamTransport versions May 16, 2016
finagle-kestrel finagle: Removed all of the guava caches from finagle Jun 9, 2016
finagle-mdns Fix some Finagle "Unused import" warnings May 30, 2016
finagle-memcached finagle-memcached: Bugfix memcached Zipkin integration Jun 29, 2016
finagle-mux util-core: Add `Future.by(Time)`, complementary to `Future.within(Dur… Jun 27, 2016
finagle-mysql finagle-mysql: Add netty4 transport Jun 27, 2016
finagle-native source: fix more unused imports for scala 2.11.8 Mar 29, 2016
finagle-netty4-http finagle-http: add IoEngineImpl to registry Jun 27, 2016
finagle-netty4 finagle-core: Remove Call of setEnableSessionCreation on SSLEngines Jun 27, 2016
finagle-ostrich4 Unrevert c.t.f.Address and fix finagle-memcached Feb 29, 2016
finagle-redis finagle-redis: Replace CB with Buf in sorted set commands Jun 27, 2016
finagle-serversets finagle: Removed all of the guava caches from finagle Jun 9, 2016
finagle-spdy finagle: Override Codec.protocolLibraryName Jun 7, 2016
finagle-stats finagle-stats: tag flaky tests Jun 27, 2016
finagle-stream finagle: Override Codec.protocolLibraryName Jun 7, 2016
finagle-thrift Problem / Solution Jun 7, 2016
finagle-thriftmux finagle-core: Unrevert + fix pipelining interrupts improvement Jun 27, 2016
finagle-toggle finagle-toggle: ToggleMap.orElse should keep Metadata descriptions Jun 29, 2016
finagle-zipkin-core finagle-core: Delegate Trace.isActivelyTracing decision to the underl… Jun 27, 2016
finagle-zipkin finagle-zipkin: Accept an explicit client name while constructing a … Jun 29, 2016
project finagle: Uncomment finagle-thrift and finagle-thriftmux from .travis.… Jun 29, 2016
site finagle-site: add link to fintrospect Feb 4, 2016
.gitignore fix broken WatermarkPool link in doc, also add *.pyc to .gitignore Feb 23, 2015
.mailmap add a .mailmap Dec 16, 2011
.travis.yml finagle: Uncomment finagle-thrift and finagle-thriftmux from .travis.… Jun 29, 2016
ADOPTERS.md Add Dwango to adopters Jun 1, 2016
CHANGES finagle-redis: Replace CB with Buf in sorted set commands Jun 27, 2016
CONFIG.ini Fix some lint errors in CONFIG.ini and OWNERS - missing newlines - tr… Feb 29, 2016
CONTRIBUTING.md Add PULL_REQUEST_TEMPLATEs Mar 10, 2016
CONTRIBUTORS [split] finagle-doc: beginnings of a finagle user's guide Feb 21, 2013
GROUPS [split] Use new git-review with simplified OWNERS/GROUPS May 18, 2012
LICENSE Project scaffolding Oct 18, 2010
OWNERS Goodbye May 11, 2015
README.md util, ostrich, scrooge, finagle, twitter-server: Update to use codeco… Jun 8, 2016
link-netty.sh [split] finagle-core: introduce Transports and Dispatchers Apr 12, 2012
pushsite.bash finagle: Documentation Generation Cleanup Dec 3, 2015
sbt scrooge-sbt-plugin, finagle: Handle compiling for multiple languages … Jun 29, 2016

README.md

Finagle

Build status Codecov branch Project status Gitter Maven Central

Status

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.

Adopters

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!

Contributing

We feel that a welcoming community is important and we ask that you follow Twitter's Open Source Code of Conduct in all interactions with the community.

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 CONTRIBUTING.md for more details about how to contribute.

Something went wrong with that request. Please try again.