Skip to content

Commit 7f420c8

Browse files
committed
adding span.kind for Otel trace annotations
1 parent b3220ae commit 7f420c8

File tree

2 files changed

+36
-4
lines changed
  • dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.20/src/main/java/datadog/trace/instrumentation/opentelemetry/annotations
  • dd-trace-api/src/main/java/datadog/trace/api

2 files changed

+36
-4
lines changed

dd-java-agent/instrumentation/opentelemetry/opentelemetry-annotations-1.20/src/main/java/datadog/trace/instrumentation/opentelemetry/annotations/WithSpanDecorator.java

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,15 @@
22

33
import static datadog.trace.api.DDSpanTypes.HTTP_CLIENT;
44
import static datadog.trace.api.DDSpanTypes.HTTP_SERVER;
5+
import static datadog.trace.api.DDSpanTypes.INTERNAL;
56
import static datadog.trace.api.DDSpanTypes.MESSAGE_CONSUMER;
67
import static datadog.trace.api.DDSpanTypes.MESSAGE_PRODUCER;
8+
import static datadog.trace.bootstrap.instrumentation.api.Tags.SPAN_KIND;
9+
import static datadog.trace.bootstrap.instrumentation.api.Tags.SPAN_KIND_CLIENT;
10+
import static datadog.trace.bootstrap.instrumentation.api.Tags.SPAN_KIND_CONSUMER;
11+
import static datadog.trace.bootstrap.instrumentation.api.Tags.SPAN_KIND_INTERNAL;
12+
import static datadog.trace.bootstrap.instrumentation.api.Tags.SPAN_KIND_PRODUCER;
13+
import static datadog.trace.bootstrap.instrumentation.api.Tags.SPAN_KIND_SERVER;
714
import static java.lang.Math.min;
815

916
import datadog.trace.api.InstrumenterConfig;
@@ -54,13 +61,13 @@ protected CharSequence component() {
5461

5562
public AgentSpan startMethodSpan(Method method) {
5663
CharSequence operationName = null;
57-
CharSequence spanType = null;
64+
SpanKind spanKind = null;
5865
boolean inheritContext = true;
5966

6067
WithSpan withSpanAnnotation = method.getAnnotation(WithSpan.class);
6168
if (withSpanAnnotation != null) {
6269
operationName = withSpanAnnotation.value();
63-
spanType = convertToSpanType(withSpanAnnotation.kind());
70+
spanKind = withSpanAnnotation.kind();
6471
if (INHERIT_CONTEXT_MH != null) {
6572
try {
6673
inheritContext = (boolean) INHERIT_CONTEXT_MH.invokeExact(withSpanAnnotation);
@@ -82,8 +89,9 @@ public AgentSpan startMethodSpan(Method method) {
8289
final AgentSpan span = spanBuilder.start();
8390
DECORATE.afterStart(span);
8491

85-
if (spanType != null) {
86-
span.setSpanType(spanType);
92+
if (spanKind != null) {
93+
span.setSpanType(convertToSpanType(spanKind));
94+
span.setTag(SPAN_KIND, convertToSpanKindTag(spanKind));
8795
}
8896
if (InstrumenterConfig.get().isMethodMeasured(method)) {
8997
span.setMeasured(true);
@@ -106,6 +114,28 @@ private static String convertToSpanType(SpanKind kind) {
106114
case CONSUMER:
107115
return MESSAGE_CONSUMER;
108116
case INTERNAL:
117+
// checking for SpanKind.INTERNAL, returning DDSpanTypes.INTERNAL
118+
return INTERNAL;
119+
default:
120+
return null;
121+
}
122+
}
123+
124+
private static String convertToSpanKindTag(SpanKind kind) {
125+
if (kind == null) {
126+
return null;
127+
}
128+
switch (kind) {
129+
case CLIENT:
130+
return SPAN_KIND_CLIENT;
131+
case SERVER:
132+
return SPAN_KIND_SERVER;
133+
case PRODUCER:
134+
return SPAN_KIND_PRODUCER;
135+
case CONSUMER:
136+
return SPAN_KIND_CONSUMER;
137+
case INTERNAL:
138+
return SPAN_KIND_INTERNAL;
109139
default:
110140
return null;
111141
}

dd-trace-api/src/main/java/datadog/trace/api/DDSpanTypes.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ public class DDSpanTypes {
88
public static final String CACHE = "cache";
99
public static final String SOAP = "soap";
1010

11+
public static final String INTERNAL = "INTERNAL";
12+
1113
public static final String SQL = "sql";
1214
public static final String MONGO = "mongodb";
1315
public static final String CASSANDRA = "cassandra";

0 commit comments

Comments
 (0)