hc-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pavol Loffay (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HTTPCLIENT-1842) OpenTracing integration
Date Wed, 26 Apr 2017 10:39:04 GMT

    [ https://issues.apache.org/jira/browse/HTTPCLIENT-1842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15984560#comment-15984560

Pavol Loffay commented on HTTPCLIENT-1842:

OpenTracing is a standardization for distributed tracing and application behavior. It's just
an API it does not do anything by itself you need to provide an implementation for it (Zipkin,
Jaeger, LightStep). 

In builder users could call something like {{.withTracing(tracerInstance)}} or {{.withTracing(tracerInstance,

We usually put these integrations to opentracing-contrib organization on github e.g. https://github.com/opentracing-contrib/java-okhttp.
The effort is to move these integrations to upstream.

I could commit to supporting it.

> OpenTracing integration
> -----------------------
>                 Key: HTTPCLIENT-1842
>                 URL: https://issues.apache.org/jira/browse/HTTPCLIENT-1842
>             Project: HttpComponents HttpClient
>          Issue Type: Improvement
>          Components: HttpClient (async), HttpClient (classic)
>            Reporter: Pavol Loffay
> Hello, 
> I am working on OpenTracing [1] integraton for {{HttpClient}} client. My current POC
is in [2]. I have a couple of questions and suggestions for next version to make the tracing
integration better and cleaner.
> First I was using interceptors but response interceptor is not invoked on exceptions
e.g. {{UnknownHostException}}. 
> Now I decided to extend {{HttpClientBuilder}} and override {{decorateProtocolExec}} but
the problem is that {{RedirectExec}} is added aftewards so tracing {{ClientExecChain}} gets
called multiple times and should be only one.  Note that tracing {{ClientExecChain}} requires
access to redirectStrategy/redirectCount/redirectDisabled to create only one span for the
whole request (this makes the integration quite nasty).
> In general there are these requirements to make the integration work properly:
> 1. for the whole invocation call request and response interceptor only once, or be able
to add tracing {{ClientExecChain}} as the last one in builder.
> 2. be able to access thread local variable from an interceptor/ClientExecChain to connect
client span with a server span
> 3. be able to intercept thrown exceptios e.g. {{UnknownHostException}}
> [1]: http://opentracing.io/
> [2]: https://github.com/pavolloffay/java-apache-httpcomponents

This message was sent by Atlassian JIRA

To unsubscribe, e-mail: dev-unsubscribe@hc.apache.org
For additional commands, e-mail: dev-help@hc.apache.org

View raw message