Skip to content

Commit 0724288

Browse files
authored
Update java semantic conventions (#658)
* update the upstream dependencies * fix semconv usages and convert new net names to old names. * spotless * fix package
1 parent dd88ec0 commit 0724288

12 files changed

+76
-18
lines changed

splunk-otel-android-volley/build.gradle.kts

+2-1
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ android {
4545

4646
val otelVersion = "1.30.0-SNAPSHOT"
4747
val otelAlphaVersion = otelVersion.replaceFirst("(-SNAPSHOT)?$".toRegex(), "-alpha$1")
48+
val otelSemconvVersion = "1.21.0-alpha"
4849

4950
dependencies {
5051
implementation("androidx.appcompat:appcompat:1.6.1")
@@ -57,7 +58,7 @@ dependencies {
5758
api("io.opentelemetry:opentelemetry-api")
5859
implementation("io.opentelemetry:opentelemetry-sdk")
5960

60-
implementation("io.opentelemetry:opentelemetry-semconv")
61+
implementation("io.opentelemetry.semconv:opentelemetry-semconv:$otelSemconvVersion")
6162

6263
implementation(platform("io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha"))
6364
implementation("io.opentelemetry.instrumentation:opentelemetry-instrumentation-api")

splunk-otel-android-volley/src/main/java/com/splunk/rum/VolleyHttpClientAttributesGetter.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import com.android.volley.Request;
2525
import com.android.volley.toolbox.HttpResponse;
2626
import io.opentelemetry.instrumentation.api.instrumenter.http.HttpClientAttributesGetter;
27-
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
27+
import io.opentelemetry.semconv.SemanticAttributes;
2828
import java.util.ArrayList;
2929
import java.util.List;
3030
import java.util.Map;

splunk-otel-android-volley/src/test/java/com/splunk/rum/TracingHurlStackExceptionTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
import com.android.volley.toolbox.StringRequest;
2626
import io.opentelemetry.sdk.testing.junit4.OpenTelemetryRule;
2727
import io.opentelemetry.sdk.trace.data.SpanData;
28-
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
28+
import io.opentelemetry.semconv.SemanticAttributes;
2929
import java.util.List;
3030
import java.util.concurrent.TimeUnit;
3131
import org.junit.After;

splunk-otel-android-volley/src/test/java/com/splunk/rum/TracingHurlStackTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import io.opentelemetry.sdk.testing.junit4.OpenTelemetryRule;
3535
import io.opentelemetry.sdk.trace.data.SpanData;
3636
import io.opentelemetry.sdk.trace.data.StatusData;
37-
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
37+
import io.opentelemetry.semconv.SemanticAttributes;
3838
import java.io.IOException;
3939
import java.net.ServerSocket;
4040
import java.net.URL;

splunk-otel-android/build.gradle.kts

+2-1
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ android {
4141

4242
val otelVersion = "1.30.0-SNAPSHOT"
4343
val otelAlphaVersion = otelVersion.replaceFirst("(-SNAPSHOT)?$".toRegex(), "-alpha$1")
44+
val otelSemconvVersion = "1.21.0-alpha"
4445

4546
dependencies {
4647
api(platform("io.opentelemetry.instrumentation:opentelemetry-instrumentation-bom-alpha:$otelAlphaVersion"))
@@ -56,7 +57,7 @@ dependencies {
5657
implementation("io.zipkin.reporter2:zipkin-sender-okhttp3")
5758
implementation("io.opentelemetry:opentelemetry-exporter-logging")
5859

59-
implementation("io.opentelemetry:opentelemetry-semconv")
60+
implementation("io.opentelemetry.semconv:opentelemetry-semconv:$otelSemconvVersion")
6061
implementation("io.opentelemetry.instrumentation:opentelemetry-okhttp-3.0")
6162

6263
api("io.opentelemetry:opentelemetry-api")

splunk-otel-android/src/main/java/com/splunk/rum/LogToSpanBridge.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
import io.opentelemetry.sdk.logs.ReadWriteLogRecord;
3434
import io.opentelemetry.sdk.logs.data.Body;
3535
import io.opentelemetry.sdk.logs.data.LogRecordData;
36-
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
36+
import io.opentelemetry.semconv.SemanticAttributes;
3737
import java.util.concurrent.TimeUnit;
3838

3939
final class LogToSpanBridge implements LogRecordProcessor {

splunk-otel-android/src/main/java/com/splunk/rum/RumInitializer.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import static com.splunk.rum.SplunkRum.RUM_TRACER_NAME;
2525
import static io.opentelemetry.android.RumConstants.APP_START_SPAN_NAME;
2626
import static io.opentelemetry.instrumentation.api.instrumenter.AttributesExtractor.constant;
27-
import static io.opentelemetry.semconv.resource.attributes.ResourceAttributes.DEPLOYMENT_ENVIRONMENT;
27+
import static io.opentelemetry.semconv.ResourceAttributes.DEPLOYMENT_ENVIRONMENT;
2828
import static java.util.Objects.requireNonNull;
2929

3030
import android.app.Application;

splunk-otel-android/src/main/java/com/splunk/rum/SplunkSpanDataModifier.java

+61-5
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,21 @@
1919
import static com.splunk.rum.SplunkRum.ERROR_MESSAGE_KEY;
2020
import static com.splunk.rum.SplunkRum.ERROR_TYPE_KEY;
2121
import static io.opentelemetry.api.common.AttributeKey.stringKey;
22-
import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.EXCEPTION_MESSAGE;
23-
import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.EXCEPTION_STACKTRACE;
24-
import static io.opentelemetry.semconv.trace.attributes.SemanticAttributes.EXCEPTION_TYPE;
22+
import static io.opentelemetry.semconv.SemanticAttributes.EXCEPTION_MESSAGE;
23+
import static io.opentelemetry.semconv.SemanticAttributes.EXCEPTION_STACKTRACE;
24+
import static io.opentelemetry.semconv.SemanticAttributes.EXCEPTION_TYPE;
25+
import static io.opentelemetry.semconv.SemanticAttributes.NETWORK_CARRIER_ICC;
26+
import static io.opentelemetry.semconv.SemanticAttributes.NETWORK_CARRIER_MCC;
27+
import static io.opentelemetry.semconv.SemanticAttributes.NETWORK_CARRIER_MNC;
28+
import static io.opentelemetry.semconv.SemanticAttributes.NETWORK_CARRIER_NAME;
29+
import static io.opentelemetry.semconv.SemanticAttributes.NETWORK_CONNECTION_SUBTYPE;
30+
import static io.opentelemetry.semconv.SemanticAttributes.NETWORK_CONNECTION_TYPE;
31+
import static io.opentelemetry.semconv.SemanticAttributes.NET_HOST_CARRIER_ICC;
32+
import static io.opentelemetry.semconv.SemanticAttributes.NET_HOST_CARRIER_MCC;
33+
import static io.opentelemetry.semconv.SemanticAttributes.NET_HOST_CARRIER_MNC;
34+
import static io.opentelemetry.semconv.SemanticAttributes.NET_HOST_CARRIER_NAME;
35+
import static io.opentelemetry.semconv.SemanticAttributes.NET_HOST_CONNECTION_SUBTYPE;
36+
import static io.opentelemetry.semconv.SemanticAttributes.NET_HOST_CONNECTION_TYPE;
2537
import static java.util.Arrays.asList;
2638
import static java.util.Collections.unmodifiableSet;
2739

@@ -35,8 +47,8 @@
3547
import io.opentelemetry.sdk.trace.data.EventData;
3648
import io.opentelemetry.sdk.trace.data.SpanData;
3749
import io.opentelemetry.sdk.trace.export.SpanExporter;
38-
import io.opentelemetry.semconv.resource.attributes.ResourceAttributes;
39-
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
50+
import io.opentelemetry.semconv.ResourceAttributes;
51+
import io.opentelemetry.semconv.SemanticAttributes;
4052
import java.util.ArrayList;
4153
import java.util.Collection;
4254
import java.util.HashSet;
@@ -103,6 +115,10 @@ private SpanData modify(SpanData original) {
103115
spanContext = original.getSpanContext();
104116
}
105117

118+
// Convert new net semconv to old
119+
modifiedAttributes =
120+
downgradeNetworkAttrNames(original.getAttributes(), modifiedAttributes);
121+
106122
// zipkin eats the event attributes that are recorded by default, so we need to convert
107123
// the exception event to span attributes
108124
for (EventData event : original.getEvents()) {
@@ -129,6 +145,19 @@ private SpanData modify(SpanData original) {
129145
return new SplunkSpan(original, spanContext, modifiedEvents, modifiedAttributes.build());
130146
}
131147

148+
// At least until we can leverage the new names...
149+
private AttributesBuilder downgradeNetworkAttrNames(
150+
Attributes originalAttributes, AttributesBuilder attributes) {
151+
return AttributeReplacer.with(originalAttributes, attributes)
152+
.update(NETWORK_CONNECTION_TYPE, NET_HOST_CONNECTION_TYPE)
153+
.update(NETWORK_CONNECTION_SUBTYPE, NET_HOST_CONNECTION_SUBTYPE)
154+
.update(NETWORK_CARRIER_ICC, NET_HOST_CARRIER_ICC)
155+
.update(NETWORK_CARRIER_MCC, NET_HOST_CARRIER_MCC)
156+
.update(NETWORK_CARRIER_MNC, NET_HOST_CARRIER_MNC)
157+
.update(NETWORK_CARRIER_NAME, NET_HOST_CARRIER_NAME)
158+
.finish();
159+
}
160+
132161
private SpanContext extractReactNativeIdsIfPresent(SpanData original) {
133162
Attributes attributes = original.getAttributes();
134163
SpanContext originalSpanContext = original.getSpanContext();
@@ -230,4 +259,31 @@ public int getTotalAttributeCount() {
230259
return modifiedAttributes.size();
231260
}
232261
}
262+
263+
private static class AttributeReplacer {
264+
private final Attributes original;
265+
private final AttributesBuilder attributes;
266+
267+
private static AttributeReplacer with(Attributes original, AttributesBuilder attributes) {
268+
return new AttributeReplacer(original, attributes);
269+
}
270+
271+
private AttributeReplacer(Attributes original, AttributesBuilder attributes) {
272+
this.original = original;
273+
this.attributes = attributes;
274+
}
275+
276+
<T> AttributeReplacer update(AttributeKey<T> currentName, AttributeKey<T> replacementName) {
277+
T value = original.get(currentName);
278+
if (value != null) {
279+
attributes.remove(currentName);
280+
attributes.put(replacementName, value);
281+
}
282+
return this;
283+
}
284+
285+
AttributesBuilder finish() {
286+
return attributes;
287+
}
288+
}
233289
}

splunk-otel-android/src/main/java/com/splunk/rum/StandardAttributes.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@
2121
import io.opentelemetry.android.export.SpanDataModifier;
2222
import io.opentelemetry.api.common.AttributeKey;
2323
import io.opentelemetry.api.common.Attributes;
24-
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
24+
import io.opentelemetry.semconv.SemanticAttributes;
2525

2626
/**
2727
* This class hold {@link AttributeKey}s for standard RUM-related attributes that are not in the
28-
* OpenTelemetry {@link io.opentelemetry.semconv.trace.attributes.SemanticAttributes} definitions.
28+
* OpenTelemetry {@link io.opentelemetry.semconv.SemanticAttributes} definitions.
2929
*/
3030
public final class StandardAttributes {
3131
/**

splunk-otel-android/src/test/java/com/splunk/rum/LogToSpanBridgeTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
import io.opentelemetry.sdk.logs.data.LogRecordData;
2929
import io.opentelemetry.sdk.testing.junit5.OpenTelemetryExtension;
3030
import io.opentelemetry.sdk.trace.data.SpanData;
31-
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
31+
import io.opentelemetry.semconv.SemanticAttributes;
3232
import java.util.List;
3333
import org.junit.jupiter.api.Test;
3434
import org.junit.jupiter.api.extension.ExtendWith;

splunk-otel-android/src/test/java/com/splunk/rum/RumInitializerTest.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
import io.opentelemetry.sdk.trace.data.SpanData;
4545
import io.opentelemetry.sdk.trace.data.StatusData;
4646
import io.opentelemetry.sdk.trace.export.SpanExporter;
47-
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
47+
import io.opentelemetry.semconv.SemanticAttributes;
4848
import java.util.ArrayList;
4949
import java.util.Arrays;
5050
import java.util.List;

splunk-otel-android/src/test/java/com/splunk/rum/SplunkSpanDataModifierTest.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@
3939
import io.opentelemetry.sdk.trace.data.SpanData;
4040
import io.opentelemetry.sdk.trace.data.StatusData;
4141
import io.opentelemetry.sdk.trace.export.SpanExporter;
42-
import io.opentelemetry.semconv.resource.attributes.ResourceAttributes;
43-
import io.opentelemetry.semconv.trace.attributes.SemanticAttributes;
42+
import io.opentelemetry.semconv.ResourceAttributes;
43+
import io.opentelemetry.semconv.SemanticAttributes;
4444
import java.util.Arrays;
4545
import java.util.Collection;
4646
import org.junit.jupiter.api.Test;

0 commit comments

Comments
 (0)