package service
- Alphabetic
- Public
- Protected
Type Members
- final class ClientExceptionTracingFilter extends filter.ClientExceptionTracingFilter[Request, Response]
Reports error and exception annotations when a span completes.
Reports error and exception annotations when a span completes. Deserializes responses to get more accurate error annotations reported at the right time.
Value Members
- object ThriftMuxResponseClassifier
ResponseClassifiers
for use withfinagle-thriftmux
request/responses.ResponseClassifiers
for use withfinagle-thriftmux
request/responses.Thrift (and ThriftMux) services are a bit unusual in that there is only a single
com.twitter.finagle.Service
fromArray[Byte]
toArray[Byte]
for all the methods of an IDL's service.ThriftMux classifiers should be written in terms of the Scrooge generated request
$Service.$Method.Args
type and the method's response type. This is because there is support in Scrooge andThriftMux.newService/newClient
to deserialize the responses into the expected application types so that classifiers can be written in a normal way.Given an idl:
exception NotFoundException { 1: string reason } exception RateLimitedException { 1: string reason } service SocialGraph { i32 follow(1: i64 follower, 2: i64 followee) throws ( 1: NotFoundException ex, 2: RateLimitedException ex ) }
One possible custom classifier would be:
val classifier: ResponseClassifier = { case ReqRep(_, Throw(_: RateLimitedException)) => RetryableFailure case ReqRep(_, Throw(_: NotFoundException)) => NonRetryableFailure case ReqRep(_, Return(x: Int)) if x == 0 => NonRetryableFailure case ReqRep(SocialGraph.Follow.Args(a, b), _) if a <= 0 || b <= 0 => NonRetryableFailure }
Often times, a good default classifier is ThriftMuxResponseClassifier.ThriftExceptionsAsFailures which treats any Thrift response that deserializes into an Exception as a non-retryable failure.