Hey guys,

We've been doing a lot of experimental changes to Thrift/C++ within
Facebook.  Some of our experiments have panned out and some haven't, but
some have dragged on for a long time with half-finished code checked into
trunk.  This has prevented us from merging our changes back out to Apache
for a while, which has been very frustrating.  I've cleaned up a lot of
the code as best I can, and I'm hoping the community would be okay
accepting these patches into the trunk, even though some of the features
are still experimental and likely to have interface changes.  Because of
the interleaved development history, it's not really possible to tease out
many of the individual features without significant conflict resolution.
However, I'm hoping that no one will be tempted to do that since all of
the changes should be isolated to new APIs and fully backwards-compatible
at the source level.

The main changes are:

- Templated transport and protocol code.  This change has sped up some of
  our benchmarks by 5x for serialization and 3x for deserialization, and
  reduced the end-to-end latency of at least one of our production systems
  by 50%.  All that's needed is a few type annotations in your C++ source.
- Async client and server support.  So far, just implemented as an
  evhttp-based client and server, but the infrastructure is in place for
  writing fully event-driven Thrift clients and servers.
- Hooks that allow user code to get better statistics about the calls
  being made to the server.
- Better test coverage for transport classes.
- Various small features and bug fixes.

My plan is to create JIRA issues with patches for the 5 items above
(including a conglomo-issue for the small changes), publish a git branch
with all of the changes (plus an instant release if people want), then
wait to see if anyone complains and commit if they don't.

The git branch is called "fb-merge-p2" and is available at either of
git://git.thrift-rpc.org/thrift.git
git://github.com/dreiss/thrift.git

Non git users can pull the full combined patch from r996610 at
http://gitweb.thrift-rpc.org/?p=thrift.git;a=treediff_plain;h=refs/heads/pri/dreiss/fb-merge-p2;hp=d5c342b

The full list of changes is at
http://gitweb.thrift-rpc.org/?p=thrift.git;a=log;h=refs/heads/pri/dreiss/fb-merge-p2;hb=HEAD
(click through on "commitdiff" to see the full individual commits.)

Thoughts?

--David

Reply via email to