The ClassifiedRetryFilter uses BufferedStreams to implement retries.
A filter that sets the ResponseClass generated by a com.twitter.finagle.buoyant.h2.service.H2Classifier into a header.
A filter that sets the ResponseClass generated by a com.twitter.finagle.buoyant.h2.service.H2Classifier into a header.
This is pretty much just a HTTP/2 version of the HTTP/1 ClassifierFilter,
but because H2 classifiers must operate on both responses and response streams,
it's significantly more complex.
Like io.buoyant.router.LocalClassifierStatsFilter, but specialized for H2 streams.
Like io.buoyant.router.PerDstPathStatsFilter, but specialized for H2 streams.
Coerces HTTP proxy requests to normal requests.
Appends the via header to all requests and responses.
Appends the via header to all requests and responses.
See https://tools.ietf.org/html/draft-ietf-httpbis-p1-messaging-14#section-9.9
The ClassifiedRetryFilter uses BufferedStreams to implement retries. The request stream is buffered and a child stream is sent to the service. This is done so that if it becomes necessary to retry, a new child of the request stream can be created.
The response stream is also buffered and held until either the response stream completes or the response buffer becomes full. If the response stream completes, we use the provided ResponseClassifier to determine if the request should be retried. If so, we discard the response stream, fork a new child of the request stream, and send the new request stream to the service. If not, we return the response stream to the caller.