The client uses the standard thrift protocols, with support for
both framed and buffered transports. Finagle attempts to upgrade
the protocol in order to ship an extra envelope carrying trace IDs
and client IDs associated with the request. These are used by
Finagle's tracing facilities and may be collected via aggregators
like Zipkin.
The negotiation is simple: on connection establishment, an
improbably-named method is dispatched on the server. If that
method isn't found, we are dealing with a legacy thrift server,
and the standard protocol is used. If the remote server is also a
finagle server (or any other supporting this extension), we reply
to the request, and every subsequent request is dispatched with an
envelope carrying trace metadata. The envelope itself is also a
Thrift struct described here.
A Finagle Client for Apache Thrift.
The client uses the standard thrift protocols, with support for both framed and buffered transports. Finagle attempts to upgrade the protocol in order to ship an extra envelope carrying trace IDs and client IDs associated with the request. These are used by Finagle's tracing facilities and may be collected via aggregators like Zipkin.
The negotiation is simple: on connection establishment, an improbably-named method is dispatched on the server. If that method isn't found, we are dealing with a legacy thrift server, and the standard protocol is used. If the remote server is also a finagle server (or any other supporting this extension), we reply to the request, and every subsequent request is dispatched with an envelope carrying trace metadata. The envelope itself is also a Thrift struct described here.