Skip to content

Commit ab34cfa

Browse files
author
Mateusz Rzeszutek
committed
fixes
1 parent 14085ff commit ab34cfa

File tree

5 files changed

+26
-16
lines changed

5 files changed

+26
-16
lines changed

instrumentation-api-semconv/src/main/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpCommonAttributesExtractor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ public void onEnd(
122122

123123
if (SemconvStability.emitStableHttpSemconv()) {
124124
String errorType;
125-
if (statusCode != null) {
125+
if (statusCode != null && statusCode > 0) {
126126
errorType = statusCodeConverter.getErrorType(statusCode);
127127
} else {
128128
errorType = getter.getErrorType(request, response, error);

instrumentation-api-semconv/src/testStableHttpSemconv/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpClientAttributesExtractorStableSemconvTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ void shouldExtractErrorType_httpStatusCode() {
341341
@Test
342342
void shouldExtractErrorType_getter() {
343343
Map<String, String> request = new HashMap<>();
344+
request.put("statusCode", "0");
344345
request.put("errorType", "custom error type");
345346

346347
AttributesExtractor<Map<String, String>, Map<String, String>> extractor =

instrumentation-api-semconv/src/testStableHttpSemconv/java/io/opentelemetry/instrumentation/api/instrumenter/http/HttpServerAttributesExtractorStableSemconvTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,7 @@ void shouldExtractErrorType_httpStatusCode() {
382382
@Test
383383
void shouldExtractErrorType_getter() {
384384
Map<String, String> request = new HashMap<>();
385+
request.put("statusCode", "0");
385386
request.put("errorType", "custom error type");
386387

387388
AttributesExtractor<Map<String, String>, Map<String, String>> extractor =

instrumentation/http-url-connection/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/httpurlconnection/HttpUrlConnectionTest.java

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@
1515
import static org.assertj.core.api.Assertions.catchThrowable;
1616

1717
import io.opentelemetry.api.trace.Span;
18+
import io.opentelemetry.instrumentation.api.instrumenter.http.internal.HttpAttributes;
19+
import io.opentelemetry.instrumentation.api.internal.SemconvStability;
1820
import io.opentelemetry.instrumentation.test.utils.PortUtils;
1921
import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension;
2022
import io.opentelemetry.instrumentation.testing.junit.http.AbstractHttpClientTest;
2123
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientInstrumentationExtension;
2224
import io.opentelemetry.instrumentation.testing.junit.http.HttpClientTestOptions;
25+
import io.opentelemetry.sdk.testing.assertj.AttributeAssertion;
2326
import io.opentelemetry.sdk.trace.data.StatusData;
2427
import io.opentelemetry.semconv.SemanticAttributes;
2528
import java.io.DataOutputStream;
@@ -29,6 +32,8 @@
2932
import java.net.URI;
3033
import java.net.URL;
3134
import java.net.URLConnection;
35+
import java.util.ArrayList;
36+
import java.util.Arrays;
3237
import java.util.Collections;
3338
import java.util.List;
3439
import java.util.Map;
@@ -337,6 +342,19 @@ public void traceRequestWithConnectionFailure(String scheme) {
337342
connection.getInputStream();
338343
}));
339344

345+
List<AttributeAssertion> attributes =
346+
new ArrayList<>(
347+
Arrays.asList(
348+
equalTo(getAttributeKey(SemanticAttributes.NET_PROTOCOL_NAME), "http"),
349+
equalTo(getAttributeKey(SemanticAttributes.NET_PROTOCOL_VERSION), "1.1"),
350+
equalTo(getAttributeKey(SemanticAttributes.NET_PEER_NAME), "localhost"),
351+
equalTo(getAttributeKey(SemanticAttributes.NET_PEER_PORT), PortUtils.UNUSABLE_PORT),
352+
equalTo(getAttributeKey(SemanticAttributes.HTTP_URL), uri),
353+
equalTo(getAttributeKey(SemanticAttributes.HTTP_METHOD), "GET")));
354+
if (SemconvStability.emitStableHttpSemconv()) {
355+
attributes.add(equalTo(HttpAttributes.ERROR_TYPE, "java.net.ConnectException"));
356+
}
357+
340358
testing.waitAndAssertTraces(
341359
trace ->
342360
trace.hasSpansSatisfyingExactly(
@@ -352,15 +370,6 @@ public void traceRequestWithConnectionFailure(String scheme) {
352370
.hasParent(trace.getSpan(0))
353371
.hasStatus(StatusData.error())
354372
.hasException(thrown)
355-
.hasAttributesSatisfyingExactly(
356-
equalTo(getAttributeKey(SemanticAttributes.NET_PROTOCOL_NAME), "http"),
357-
equalTo(
358-
getAttributeKey(SemanticAttributes.NET_PROTOCOL_VERSION), "1.1"),
359-
equalTo(getAttributeKey(SemanticAttributes.NET_PEER_NAME), "localhost"),
360-
equalTo(
361-
getAttributeKey(SemanticAttributes.NET_PEER_PORT),
362-
PortUtils.UNUSABLE_PORT),
363-
equalTo(getAttributeKey(SemanticAttributes.HTTP_URL), uri),
364-
equalTo(getAttributeKey(SemanticAttributes.HTTP_METHOD), "GET"))));
373+
.hasAttributesSatisfyingExactly(attributes)));
365374
}
366375
}

instrumentation/netty/netty-4-common/library/src/main/java/io/opentelemetry/instrumentation/netty/v4/common/internal/client/NettyClientInstrumenterFactory.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanNameExtractorBuilder;
2121
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpSpanStatusExtractor;
2222
import io.opentelemetry.instrumentation.api.instrumenter.net.PeerServiceAttributesExtractor;
23-
import io.opentelemetry.instrumentation.api.instrumenter.network.NetworkAttributesExtractor;
24-
import io.opentelemetry.instrumentation.api.instrumenter.network.ServerAttributesExtractor;
2523
import io.opentelemetry.instrumentation.netty.common.internal.NettyConnectionRequest;
2624
import io.opentelemetry.instrumentation.netty.v4.common.HttpRequestAndChannel;
2725
import java.util.List;
@@ -87,6 +85,7 @@ public Instrumenter<HttpRequestAndChannel, HttpResponse> createHttpInstrumenter(
8785
return builder.buildClientInstrumenter(HttpRequestHeadersSetter.INSTANCE);
8886
}
8987

88+
@SuppressWarnings("deprecation") // have to use the deprecated Net*AttributesExtractor for now
9089
public NettyConnectionInstrumenter createConnectionInstrumenter() {
9190
if (connectionTelemetryState == NettyConnectionInstrumentationFlag.DISABLED) {
9291
return NoopConnectionInstrumenter.INSTANCE;
@@ -106,9 +105,9 @@ public NettyConnectionInstrumenter createConnectionInstrumenter() {
106105
// when the connection telemetry is fully enabled, CONNECT spans are created for every
107106
// request; and semantically they're not HTTP spans, they must not use the HTTP client
108107
// extractor
109-
builder
110-
.addAttributesExtractor(NetworkAttributesExtractor.create(getter))
111-
.addAttributesExtractor(ServerAttributesExtractor.create(getter));
108+
builder.addAttributesExtractor(
109+
io.opentelemetry.instrumentation.api.instrumenter.net.NetClientAttributesExtractor.create(
110+
getter));
112111
} else {
113112
// in case the connection telemetry is emitted only on errors, the CONNECT span is a stand-in
114113
// for the HTTP client span

0 commit comments

Comments
 (0)