Skip to content

Commit df75e8e

Browse files
committed
Properly finish spans and support latest apache httpclient5
1 parent 4025000 commit df75e8e

File tree

3 files changed

+15
-7
lines changed

3 files changed

+15
-7
lines changed

dd-java-agent/instrumentation/apache-httpclient-5/src/main/java/datadog/trace/instrumentation/apachehttpclient5/TraceContinuedFutureCallback.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public TraceContinuedFutureCallback(
3535

3636
@Override
3737
public void completed(final T result) {
38-
DECORATE.onResponse(clientSpan, getResponseFromHttpContext());
38+
DECORATE.onResponse(clientSpan, extractHttpResponse(result));
3939
DECORATE.beforeFinish(clientSpan);
4040
clientSpan.finish(); // Finish span before calling delegate
4141

@@ -51,7 +51,7 @@ public void completed(final T result) {
5151

5252
@Override
5353
public void failed(final Exception ex) {
54-
DECORATE.onResponse(clientSpan, getResponseFromHttpContext());
54+
DECORATE.onResponse(clientSpan, extractHttpResponse(null));
5555
DECORATE.onError(clientSpan, ex);
5656
DECORATE.beforeFinish(clientSpan);
5757
clientSpan.finish(); // Finish span before calling delegate
@@ -68,7 +68,7 @@ public void failed(final Exception ex) {
6868

6969
@Override
7070
public void cancelled() {
71-
DECORATE.onResponse(clientSpan, getResponseFromHttpContext());
71+
DECORATE.onResponse(clientSpan, extractHttpResponse(null));
7272
DECORATE.beforeFinish(clientSpan);
7373
clientSpan.finish(); // Finish span before calling delegate
7474

@@ -101,7 +101,15 @@ private void cancelDelegate() {
101101
}
102102

103103
@Nullable
104-
private HttpResponse getResponseFromHttpContext() {
105-
return (HttpResponse) context.getAttribute(HttpCoreContext.HTTP_RESPONSE);
104+
private HttpResponse extractHttpResponse(Object futureResult) {
105+
if (context != null) {
106+
Object fromContext = context.getAttribute(HttpCoreContext.HTTP_RESPONSE);
107+
if (fromContext instanceof HttpResponse) {
108+
return (HttpResponse) fromContext;
109+
}
110+
} else if (futureResult instanceof HttpResponse) {
111+
return (HttpResponse) futureResult;
112+
}
113+
return null;
106114
}
107115
}

dd-java-agent/instrumentation/apache-httpclient-5/src/test/groovy/ApacheHttpAsyncClient5Test.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ abstract class ApacheHttpAsyncClient5Test<T extends HttpRequest> extends HttpCli
5757
}
5858
}
5959

60-
class ApacheHttpAsyncClient5NamingV0ForkedTest extends ApacheHttpAsyncClient5Test implements TestingGenericHttpNamingConventions.ClientV0 {
60+
class ApacheHttpAsyncClient5NamingV0Test extends ApacheHttpAsyncClient5Test implements TestingGenericHttpNamingConventions.ClientV0 {
6161
}
6262

6363
class ApacheHttpAsyncClient5NamingV1ForkedTest extends ApacheHttpAsyncClient5Test implements TestingGenericHttpNamingConventions.ClientV1 {

dd-java-agent/instrumentation/apache-httpclient-5/src/test/groovy/ApacheHttpClientTest.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ abstract class ApacheClientResponseHandlerAll extends ApacheHttpClientTest<Class
208208
}
209209

210210
@Timeout(5)
211-
class ApacheClientResponseHandlerAllV0ForkedTest extends ApacheClientResponseHandlerAll {
211+
class ApacheClientResponseHandlerAllV0Test extends ApacheClientResponseHandlerAll {
212212
}
213213

214214
@Timeout(5)

0 commit comments

Comments
 (0)