[ https://issues.apache.org/jira/browse/HTTPCLIENT-1842?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15996807#comment-15996807 ]
Pavol Loffay commented on HTTPCLIENT-1842: ------------------------------------------ I have to register two {{ExecChainHandler}}s. One which runs before {{MAIN_TRANSPORT}} to collect timing information of all requests and the second one which wraps the whole invocation of {{client.exec}} so is run as the first in the invocation chain. {{MAIN_TRANSPORT}} is always registered so it's fine I can call {{clientBuilder.addExecInterceptorBefore(ChainElements.MAIN_TRANSPORT.name()}}. But the one which should be registered as the first is problematic because redirectExec/contentCompression/backOff can be skipped. Something like clientBuilder.addExecInterceptorFirst(exec)}} should do the job. > 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 > Fix For: 5.0 > > > 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 (v6.3.15#6346) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@hc.apache.org For additional commands, e-mail: dev-h...@hc.apache.org