Skip to content

Commit b2b61e0

Browse files
committed
Changes required for supporting OT 0.31.0
Also updates all the contrib versions that we currently depend on to their 0.31.0 supporting versions.
1 parent 097f27e commit b2b61e0

File tree

56 files changed

+702
-893
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

56 files changed

+702
-893
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ class InstrumentedClass {
187187
// 2. If using the Java Agent (-javaagent;/path/to/agent.jar), do not instantiate the GlobalTracer; the Agent instantiates it for you
188188
Tracer tracer = io.opentracing.util.GlobalTracer.get();
189189

190-
Span span = tracer.buildSpan("operation-name").startActive();
190+
Span span = tracer.buildSpan("operation-name").startActive(true);
191191
span.setTag(DDTags.SERVICE_NAME, "my-new-service");
192192

193193
// The code you're tracing
@@ -207,7 +207,7 @@ class InstrumentedClass {
207207
void method0() {
208208
Tracer tracer = io.opentracing.util.GlobalTracer.get();
209209

210-
try (ActiveSpan span = tracer.buildSpan("operation-name").startActive()) {
210+
try (ActiveSpan span = tracer.buildSpan("operation-name").startActive(true)) {
211211
span.setTag(DDTags.SERVICE_NAME, "my-new-service");
212212
Thread.sleep(1000);
213213
}

dd-java-agent-ittests/src/test/groovy/datadog/trace/agent/integration/TestHttpServer.groovy

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package datadog.trace.agent.integration
22

3-
import io.opentracing.ActiveSpan
3+
import io.opentracing.Scope
44
import io.opentracing.SpanContext
55
import io.opentracing.propagation.Format
66
import io.opentracing.propagation.TextMap
@@ -53,12 +53,12 @@ class TestHttpServer {
5353
final SpanContext extractedContext =
5454
GlobalTracer.get()
5555
.extract(Format.Builtin.HTTP_HEADERS, new RatpackResponseAdapter(context))
56-
ActiveSpan span =
56+
Scope scope =
5757
GlobalTracer.get()
5858
.buildSpan("test-http-server")
5959
.asChildOf(extractedContext)
60-
.startActive()
61-
span.deactivate()
60+
.startActive(true)
61+
scope.close()
6262
}
6363

6464
response.status(200).send(msg)

dd-java-agent-ittests/src/test/groovy/datadog/trace/agent/integration/httpclient/ApacheHttpClientTest.groovy

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package datadog.trace.agent.integration.httpclient
22

3-
import datadog.opentracing.DDBaseSpan
3+
import datadog.opentracing.DDSpan
44
import datadog.opentracing.DDTracer
55
import datadog.trace.agent.integration.TestHttpServer
66
import datadog.trace.agent.test.TestUtils
@@ -53,18 +53,18 @@ class ApacheHttpClientTest extends Specification {
5353
expect:
5454
// one trace on the server, one trace on the client
5555
writer.size() == 2
56-
final List<DDBaseSpan<?>> serverTrace = writer.get(0)
56+
final List<DDSpan> serverTrace = writer.get(0)
5757
serverTrace.size() == 1
5858

59-
final List<DDBaseSpan<?>> clientTrace = writer.get(1)
59+
final List<DDSpan> clientTrace = writer.get(1)
6060
clientTrace.size() == 3
6161
clientTrace.get(0).getOperationName() == "someTrace"
6262
// our instrumentation makes 2 spans for apache-httpclient
63-
final DDBaseSpan<?> localSpan = clientTrace.get(1)
63+
final DDSpan localSpan = clientTrace.get(1)
6464
localSpan.getTags()[Tags.COMPONENT.getKey()] == "apache-httpclient"
6565
localSpan.getOperationName() == "GET"
6666

67-
final DDBaseSpan<?> clientSpan = clientTrace.get(2)
67+
final DDSpan clientSpan = clientTrace.get(2)
6868
clientSpan.getOperationName() == "GET"
6969
clientSpan.getTags()[Tags.HTTP_METHOD.getKey()] == "GET"
7070
clientSpan.getTags()[Tags.HTTP_STATUS.getKey()] == 200
@@ -100,15 +100,15 @@ class ApacheHttpClientTest extends Specification {
100100
expect:
101101
// only one trace (client).
102102
writer.size() == 1
103-
final List<DDBaseSpan<?>> clientTrace = writer.get(0)
103+
final List<DDSpan> clientTrace = writer.get(0)
104104
clientTrace.size() == 3
105105
clientTrace.get(0).getOperationName() == "someTrace"
106106
// our instrumentation makes 2 spans for apache-httpclient
107-
final DDBaseSpan<?> localSpan = clientTrace.get(1)
107+
final DDSpan localSpan = clientTrace.get(1)
108108
localSpan.getTags()[Tags.COMPONENT.getKey()] == "apache-httpclient"
109109
localSpan.getOperationName() == "GET"
110110

111-
final DDBaseSpan<?> clientSpan = clientTrace.get(2)
111+
final DDSpan clientSpan = clientTrace.get(2)
112112
clientSpan.getOperationName() == "GET"
113113
clientSpan.getTags()[Tags.HTTP_METHOD.getKey()] == "GET"
114114
clientSpan.getTags()[Tags.HTTP_STATUS.getKey()] == 200

dd-java-agent-ittests/src/test/groovy/datadog/trace/agent/integration/servlet/JettyServletTest.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package datadog.trace.agent.integration.servlet
22

3-
import datadog.opentracing.DDBaseSpan
3+
import datadog.opentracing.DDSpan
44
import datadog.opentracing.DDTracer
55
import datadog.trace.common.writer.ListWriter
66
import io.opentracing.util.GlobalTracer
@@ -43,7 +43,7 @@ class JettyServletTest extends Specification {
4343

4444
ListWriter writer = new ListWriter() {
4545
@Override
46-
void write(final List<DDBaseSpan<?>> trace) {
46+
void write(final List<DDSpan> trace) {
4747
add(trace)
4848
JettyServletTest.latch.countDown()
4949
}

dd-java-agent-ittests/src/test/groovy/datadog/trace/agent/integration/servlet/TomcatServletTest.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class TomcatServletTest extends Specification {
4545
}
4646
appContext = tomcatServer.addWebapp("", applicationDir.getAbsolutePath())
4747
// Speed up startup by disabling jar scanning:
48-
appContext.getJarScanner().setJarScanFilter(new JarScanFilter(){
48+
appContext.getJarScanner().setJarScanFilter(new JarScanFilter() {
4949
@Override
5050
boolean check(JarScanType jarScanType, String jarName) {
5151
return false
@@ -147,9 +147,9 @@ class TomcatServletTest extends Specification {
147147
span.context().tags.size() == 11
148148

149149
where:
150-
path | expectedResponse
150+
path | expectedResponse
151151
//"async" | "Hello Async" // FIXME: I can't seem get the async error handler to trigger
152-
"sync" | "Hello Sync"
152+
"sync" | "Hello Sync"
153153
}
154154

155155
private static int randomOpenPort() {

dd-java-agent-ittests/src/test/java/datadog/trace/agent/instrumentation/annotation/TraceAnnotationsTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import static org.assertj.core.api.Assertions.assertThat;
44

5-
import datadog.opentracing.DDBaseSpan;
5+
import datadog.opentracing.DDSpan;
66
import datadog.opentracing.DDTracer;
77
import datadog.opentracing.decorators.ErrorFlag;
88
import datadog.trace.agent.test.SayTracedHello;
@@ -73,7 +73,7 @@ public void testExceptionExit() {
7373
final StringWriter errorString = new StringWriter();
7474
error.printStackTrace(new PrintWriter(errorString));
7575

76-
final DDBaseSpan<?> span = writer.firstTrace().get(0);
76+
final DDSpan span = writer.firstTrace().get(0);
7777
assertThat(span.getOperationName()).isEqualTo("ERROR");
7878
assertThat(span.getTags().get("error")).isEqualTo(true);
7979
assertThat(span.getTags().get("error.msg")).isEqualTo(error.getMessage());

dd-java-agent-ittests/src/test/java/datadog/trace/agent/integration/MongoAsyncClientInstrumentationTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import com.mongodb.async.client.MongoClient;
99
import com.mongodb.async.client.MongoClients;
1010
import com.mongodb.async.client.MongoDatabase;
11-
import datadog.opentracing.DDBaseSpan;
11+
import datadog.opentracing.DDSpan;
1212
import datadog.opentracing.DDTracer;
1313
import datadog.trace.agent.test.TestUtils;
1414
import datadog.trace.common.writer.ListWriter;
@@ -103,7 +103,7 @@ public void onResult(final Long result, final Throwable t) {
103103

104104
final String createCollectionQuery =
105105
"{ \"create\" : \"asyncCollection\", \"autoIndexId\" : \"?\", \"capped\" : \"?\" }";
106-
final DDBaseSpan<?> trace0 = writer.get(0).get(0);
106+
final DDSpan trace0 = writer.get(0).get(0);
107107
Assert.assertEquals("mongo.query", trace0.getOperationName());
108108
Assert.assertEquals(createCollectionQuery, trace0.getResourceName());
109109
Assert.assertEquals("mongodb", trace0.getType());

dd-java-agent-ittests/src/test/java/datadog/trace/agent/integration/MongoClientInstrumentationTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import com.mongodb.MongoClient;
44
import com.mongodb.client.MongoCollection;
55
import com.mongodb.client.MongoDatabase;
6-
import datadog.opentracing.DDBaseSpan;
6+
import datadog.opentracing.DDSpan;
77
import datadog.opentracing.DDTracer;
88
import datadog.trace.agent.test.TestUtils;
99
import datadog.trace.common.writer.ListWriter;
@@ -100,7 +100,7 @@ public void insertOperation() throws UnknownHostException {
100100

101101
final String createCollectionQuery =
102102
"{ \"create\" : \"testCollection\", \"autoIndexId\" : \"?\", \"capped\" : \"?\" }";
103-
final DDBaseSpan<?> trace0 = writer.get(0).get(0);
103+
final DDSpan trace0 = writer.get(0).get(0);
104104
Assert.assertEquals("mongo.query", trace0.getOperationName());
105105
Assert.assertEquals(createCollectionQuery, trace0.getResourceName());
106106
Assert.assertEquals("mongodb", trace0.getType());

dd-java-agent-ittests/src/test/java/datadog/trace/agent/test/SayTracedHello.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,20 +9,23 @@ public class SayTracedHello {
99

1010
@Trace
1111
public static String sayHello() {
12-
new StringTag(DDTags.SERVICE_NAME).set(GlobalTracer.get().activeSpan(), "test");
12+
new StringTag(DDTags.SERVICE_NAME)
13+
.set(GlobalTracer.get().scopeManager().active().span(), "test");
1314
return "hello!";
1415
}
1516

1617
@Trace(operationName = "SAY_HA")
1718
public static String sayHA() {
18-
new StringTag(DDTags.SERVICE_NAME).set(GlobalTracer.get().activeSpan(), "test");
19-
new StringTag(DDTags.SPAN_TYPE).set(GlobalTracer.get().activeSpan(), "DB");
19+
new StringTag(DDTags.SERVICE_NAME)
20+
.set(GlobalTracer.get().scopeManager().active().span(), "test");
21+
new StringTag(DDTags.SPAN_TYPE).set(GlobalTracer.get().scopeManager().active().span(), "DB");
2022
return "HA!!";
2123
}
2224

2325
@Trace(operationName = "NEW_TRACE")
2426
public static String sayHELLOsayHA() {
25-
new StringTag(DDTags.SERVICE_NAME).set(GlobalTracer.get().activeSpan(), "test2");
27+
new StringTag(DDTags.SERVICE_NAME)
28+
.set(GlobalTracer.get().scopeManager().active().span(), "test2");
2629
return sayHello() + sayHA();
2730
}
2831

dd-java-agent/instrumentation/apache-httpclient-4.3/src/main/java/datadog/trace/instrumentation/apachehttpclient/DDTracingClientExec.java

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package datadog.trace.instrumentation.apachehttpclient;
22

3-
import io.opentracing.ActiveSpan;
3+
import io.opentracing.Scope;
4+
import io.opentracing.Span;
45
import io.opentracing.Tracer;
56
import io.opentracing.propagation.Format;
67
import io.opentracing.propagation.TextMap;
@@ -48,10 +49,10 @@ public class DDTracingClientExec implements ClientExecChain {
4849
private final Tracer tracer;
4950

5051
public DDTracingClientExec(
51-
ClientExecChain clientExecChain,
52-
RedirectStrategy redirectStrategy,
53-
boolean redirectHandlingDisabled,
54-
Tracer tracer) {
52+
final ClientExecChain clientExecChain,
53+
final RedirectStrategy redirectStrategy,
54+
final boolean redirectHandlingDisabled,
55+
final Tracer tracer) {
5556
this.requestExecutor = clientExecChain;
5657
this.redirectStrategy = redirectStrategy;
5758
this.redirectHandlingDisabled = redirectHandlingDisabled;
@@ -60,30 +61,30 @@ public DDTracingClientExec(
6061

6162
@Override
6263
public CloseableHttpResponse execute(
63-
HttpRoute route,
64-
HttpRequestWrapper request,
65-
HttpClientContext clientContext,
66-
HttpExecutionAware execAware)
64+
final HttpRoute route,
65+
final HttpRequestWrapper request,
66+
final HttpClientContext clientContext,
67+
final HttpExecutionAware execAware)
6768
throws IOException, HttpException {
6869

69-
ActiveSpan localSpan = clientContext.getAttribute(ACTIVE_SPAN, ActiveSpan.class);
70+
Scope localScope = clientContext.getAttribute(ACTIVE_SPAN, Scope.class);
7071
CloseableHttpResponse response = null;
7172
try {
72-
if (localSpan == null) {
73-
localSpan = createLocalSpan(request, clientContext);
73+
if (localScope == null) {
74+
localScope = createLocalScope(request, clientContext);
7475
}
7576

76-
return (response = createNetworkSpan(localSpan, route, request, clientContext, execAware));
77-
} catch (Exception e) {
78-
localSpan.deactivate();
77+
return (response = createNetworkSpan(localScope, route, request, clientContext, execAware));
78+
} catch (final Exception e) {
79+
localScope.close();
7980
throw e;
8081
} finally {
8182
if (response != null) {
8283
/**
8384
* This exec runs after {@link org.apache.http.impl.execchain.RedirectExec} which loops
8485
* until there is no redirect or reaches max redirect count. {@link RedirectStrategy} is
85-
* used to decide whether localSpan should be finished or not. If there is a redirect
86-
* localSpan is not finished and redirect is logged.
86+
* used to decide whether localScope should be finished or not. If there is a redirect
87+
* localScope is not finished and redirect is logged.
8788
*/
8889
Integer redirectCount = clientContext.getAttribute(REDIRECT_COUNT, Integer.class);
8990
if (!redirectHandlingDisabled
@@ -92,37 +93,40 @@ public CloseableHttpResponse execute(
9293
&& ++redirectCount < clientContext.getRequestConfig().getMaxRedirects()) {
9394
clientContext.setAttribute(REDIRECT_COUNT, redirectCount);
9495
} else {
95-
localSpan.deactivate();
96+
localScope.close();
9697
}
9798
}
9899
}
99100
}
100101

101-
private ActiveSpan createLocalSpan(HttpRequest httpRequest, HttpClientContext clientContext) {
102-
Tracer.SpanBuilder spanBuilder =
102+
private Scope createLocalScope(
103+
final HttpRequest httpRequest, final HttpClientContext clientContext) {
104+
final Tracer.SpanBuilder spanBuilder =
103105
tracer
104106
.buildSpan(httpRequest.getRequestLine().getMethod())
105107
.withTag(Tags.COMPONENT.getKey(), COMPONENT_NAME);
106108

107-
ActiveSpan localSpan = spanBuilder.startActive();
108-
clientContext.setAttribute(ACTIVE_SPAN, localSpan);
109+
final Scope scope = spanBuilder.startActive(true);
110+
clientContext.setAttribute(ACTIVE_SPAN, scope);
109111
clientContext.setAttribute(REDIRECT_COUNT, 0);
110-
return localSpan;
112+
return scope;
111113
}
112114

113115
private CloseableHttpResponse createNetworkSpan(
114-
ActiveSpan parentSpan,
115-
HttpRoute route,
116-
HttpRequestWrapper request,
117-
HttpClientContext clientContext,
118-
HttpExecutionAware execAware)
116+
final Scope parentScope,
117+
final HttpRoute route,
118+
final HttpRequestWrapper request,
119+
final HttpClientContext clientContext,
120+
final HttpExecutionAware execAware)
119121
throws IOException, HttpException {
120-
ActiveSpan networkSpan =
122+
final Scope networkScope =
121123
tracer
122124
.buildSpan(request.getMethod())
123125
.withTag(Tags.SPAN_KIND.getKey(), Tags.SPAN_KIND_CLIENT)
124-
.asChildOf(parentSpan)
125-
.startActive();
126+
.asChildOf(parentScope.span())
127+
.startActive(true);
128+
129+
final Span networkSpan = networkScope.span();
126130
tracer.inject(
127131
networkSpan.context(), Format.Builtin.HTTP_HEADERS, new HttpHeadersInjectAdapter(request));
128132

@@ -148,20 +152,20 @@ private CloseableHttpResponse createNetworkSpan(
148152

149153
throw e;
150154
} finally {
151-
networkSpan.deactivate();
155+
networkScope.close();
152156
}
153157
}
154158

155159
public static class HttpHeadersInjectAdapter implements TextMap {
156160

157-
private HttpRequest httpRequest;
161+
private final HttpRequest httpRequest;
158162

159-
public HttpHeadersInjectAdapter(HttpRequest httpRequest) {
163+
public HttpHeadersInjectAdapter(final HttpRequest httpRequest) {
160164
this.httpRequest = httpRequest;
161165
}
162166

163167
@Override
164-
public void put(String key, String value) {
168+
public void put(final String key, final String value) {
165169
httpRequest.addHeader(key, value);
166170
}
167171

0 commit comments

Comments
 (0)