|
7 | 7 |
|
8 | 8 | import static io.opentelemetry.api.trace.SpanKind.CLIENT;
|
9 | 9 | import static io.opentelemetry.api.trace.SpanKind.INTERNAL;
|
10 |
| -import static io.opentelemetry.javaagent.instrumentation.netty.common.client.NettyResponseInjectAdapter.SETTER; |
11 | 10 | import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.NetTransportValues.IP_TCP;
|
12 | 11 | import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.NetTransportValues.IP_UDP;
|
13 | 12 |
|
14 | 13 | import io.netty.channel.Channel;
|
15 |
| -import io.netty.channel.ChannelHandlerContext; |
16 | 14 | import io.netty.channel.socket.DatagramChannel;
|
17 |
| -import io.netty.handler.codec.http.HttpHeaders; |
18 |
| -import io.netty.handler.codec.http.HttpResponse; |
19 | 15 | import io.opentelemetry.api.trace.Span;
|
20 | 16 | import io.opentelemetry.api.trace.SpanBuilder;
|
21 | 17 | import io.opentelemetry.context.Context;
|
22 |
| -import io.opentelemetry.context.propagation.TextMapSetter; |
23 | 18 | import io.opentelemetry.instrumentation.api.config.Config;
|
24 |
| -import io.opentelemetry.instrumentation.api.tracer.HttpClientTracer; |
| 19 | +import io.opentelemetry.instrumentation.api.tracer.BaseTracer; |
25 | 20 | import io.opentelemetry.instrumentation.api.tracer.net.NetPeerAttributes;
|
26 | 21 | import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
|
27 | 22 | import java.net.InetSocketAddress;
|
28 | 23 | import java.net.SocketAddress;
|
29 |
| -import java.net.URI; |
30 |
| -import java.net.URISyntaxException; |
31 |
| -import org.checkerframework.checker.nullness.qual.Nullable; |
32 | 24 |
|
33 |
| -public abstract class AbstractNettyHttpClientTracer<REQUEST extends AbstractNettyRequestWrapper> |
34 |
| - extends HttpClientTracer<REQUEST, HttpHeaders, HttpResponse> { |
| 25 | +public abstract class AbstractNettyHttpClientTracer extends BaseTracer { |
35 | 26 |
|
36 | 27 | private static final boolean alwaysCreateConnectSpan =
|
37 | 28 | Config.get().getBoolean("otel.instrumentation.netty.always-create-connect-span", false);
|
38 | 29 |
|
39 |
| - protected AbstractNettyHttpClientTracer() { |
40 |
| - super(NetPeerAttributes.INSTANCE); |
41 |
| - } |
42 |
| - |
43 |
| - public Context startSpan(Context parentContext, ChannelHandlerContext ctx, REQUEST request) { |
44 |
| - SpanBuilder spanBuilder = spanBuilder(parentContext, spanNameForRequest(request), CLIENT); |
45 |
| - onRequest(spanBuilder, request); |
46 |
| - NetPeerAttributes.INSTANCE.setNetPeer( |
47 |
| - spanBuilder, (InetSocketAddress) ctx.channel().remoteAddress()); |
48 |
| - |
49 |
| - Context context = withClientSpan(parentContext, spanBuilder.startSpan()); |
50 |
| - inject(context, request.headers(), SETTER); |
51 |
| - return context; |
52 |
| - } |
53 |
| - |
54 |
| - @Override |
55 |
| - protected String method(REQUEST httpRequest) { |
56 |
| - return httpRequest.method().name(); |
57 |
| - } |
58 |
| - |
59 |
| - @Override |
60 |
| - @Nullable |
61 |
| - protected String flavor(REQUEST httpRequest) { |
62 |
| - return httpRequest.protocolVersion().text(); |
63 |
| - } |
64 |
| - |
65 |
| - @Override |
66 |
| - protected URI url(REQUEST request) throws URISyntaxException { |
67 |
| - URI uri = new URI(request.uri()); |
68 |
| - String hostHeader = request.getHostHeader(); |
69 |
| - if ((uri.getHost() == null || uri.getHost().equals("")) && hostHeader != null) { |
70 |
| - String protocol = request.isHttps() ? "https://" : "http://"; |
71 |
| - uri = new URI(protocol + hostHeader + request.uri()); |
72 |
| - } |
73 |
| - return uri; |
74 |
| - } |
75 |
| - |
76 |
| - @Override |
77 |
| - protected String requestHeader(AbstractNettyRequestWrapper httpRequest, String name) { |
78 |
| - return httpRequest.headers().get(name); |
79 |
| - } |
80 |
| - |
81 |
| - @Override |
82 |
| - protected String responseHeader(HttpResponse httpResponse, String name) { |
83 |
| - return httpResponse.headers().get(name); |
84 |
| - } |
85 |
| - |
86 |
| - @Override |
87 |
| - protected TextMapSetter<HttpHeaders> getSetter() { |
88 |
| - return SETTER; |
89 |
| - } |
90 |
| - |
91 | 30 | public Context startConnectionSpan(Context parentContext, SocketAddress remoteAddress) {
|
92 | 31 | if (!alwaysCreateConnectSpan) {
|
93 | 32 | return null;
|
|
0 commit comments