Skip to content

Commit e94e24d

Browse files
committed
Restore op and description from previous versions of OTel SDK
1 parent d533746 commit e94e24d

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

sentry-opentelemetry/sentry-opentelemetry-core/src/main/java/io/sentry/opentelemetry/SpanDescriptionExtractor.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import io.opentelemetry.semconv.HttpAttributes;
77
import io.opentelemetry.semconv.UrlAttributes;
88
import io.opentelemetry.semconv.incubating.DbIncubatingAttributes;
9+
import io.opentelemetry.semconv.incubating.GraphqlIncubatingAttributes;
910
import io.opentelemetry.semconv.incubating.HttpIncubatingAttributes;
1011
import io.sentry.protocol.TransactionNameSource;
1112
import org.jetbrains.annotations.ApiStatus;
@@ -30,6 +31,11 @@ public final class SpanDescriptionExtractor {
3031
return descriptionForDbSystem(otelSpan);
3132
}
3233

34+
final @Nullable String graphqlOperationType = attributes.get(GraphqlIncubatingAttributes.GRAPHQL_OPERATION_TYPE);
35+
if (graphqlOperationType != null) {
36+
return descriptionForGraphql(otelSpan);
37+
}
38+
3339
final @NotNull String name = otelSpan.getName();
3440
final @Nullable String maybeDescription =
3541
sentrySpan != null ? sentrySpan.getDescription() : name;
@@ -105,4 +111,16 @@ private OtelSpanInfo descriptionForDbSystem(final @NotNull SpanData otelSpan) {
105111

106112
return new OtelSpanInfo("db", otelSpan.getName(), TransactionNameSource.TASK);
107113
}
114+
115+
private OtelSpanInfo descriptionForGraphql(final @NotNull SpanData otelSpan) {
116+
final @NotNull Attributes attributes = otelSpan.getAttributes();
117+
@Nullable String graphqlOperationType = attributes.get(GraphqlIncubatingAttributes.GRAPHQL_OPERATION_TYPE);
118+
@Nullable String graphqlOperationName = attributes.get(GraphqlIncubatingAttributes.GRAPHQL_OPERATION_NAME);
119+
if (graphqlOperationType != null && graphqlOperationName != null) {
120+
String description = graphqlOperationType + " " + graphqlOperationName;
121+
return new OtelSpanInfo(description, description, TransactionNameSource.TASK);
122+
}
123+
124+
return new OtelSpanInfo(otelSpan.getName(), otelSpan.getName(), TransactionNameSource.TASK);
125+
}
108126
}

sentry-opentelemetry/sentry-opentelemetry-core/src/test/kotlin/SpanDescriptionExtractorTest.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import io.opentelemetry.sdk.trace.data.SpanData
1010
import io.opentelemetry.semconv.HttpAttributes
1111
import io.opentelemetry.semconv.UrlAttributes
1212
import io.opentelemetry.semconv.incubating.DbIncubatingAttributes
13+
import io.opentelemetry.semconv.incubating.GraphqlIncubatingAttributes
1314
import io.opentelemetry.semconv.incubating.HttpIncubatingAttributes
1415
import io.sentry.protocol.TransactionNameSource
1516
import kotlin.test.Test
@@ -253,6 +254,22 @@ class SpanDescriptionExtractorTest {
253254
assertEquals(TransactionNameSource.CUSTOM, info.transactionNameSource)
254255
}
255256

257+
@Test
258+
fun `sets op to graphql for span with graphql operation type`() {
259+
givenAttributes(
260+
mapOf(
261+
GraphqlIncubatingAttributes.GRAPHQL_OPERATION_TYPE to "query",
262+
GraphqlIncubatingAttributes.GRAPHQL_OPERATION_NAME to "GreetingQuery",
263+
)
264+
)
265+
266+
val info = whenExtractingSpanInfo()
267+
268+
assertEquals("query GreetingQuery", info.op)
269+
assertEquals("query GreetingQuery", info.description)
270+
assertEquals(TransactionNameSource.TASK, info.transactionNameSource)
271+
}
272+
256273
private fun createSpanContext(
257274
isRemote: Boolean,
258275
traceId: String = "f9118105af4a2d42b4124532cd1065ff",

0 commit comments

Comments
 (0)