Skip to content

Commit 7c14f70

Browse files
authored
Merge 1cc35c7 into 2d1a223
2 parents 2d1a223 + 1cc35c7 commit 7c14f70

File tree

7 files changed

+66
-9
lines changed

7 files changed

+66
-9
lines changed

sentry-opentelemetry/sentry-opentelemetry-agentcustomization/src/main/java/io/sentry/opentelemetry/SentryAutoConfigurationCustomizerProvider.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public void customize(AutoConfigurationCustomizer autoConfiguration) {
2828
options -> {
2929
options.setEnableExternalConfiguration(true);
3030
options.setInstrumenter(Instrumenter.OTEL);
31+
options.addEventProcessor(new OpenTelemetryLinkErrorEventProcessor());
3132
final @Nullable SdkVersion sdkVersion = createSdkVersion(options);
3233
if (sdkVersion != null) {
3334
options.setSdkVersion(sdkVersion);

sentry-opentelemetry/sentry-opentelemetry-core/api/sentry-opentelemetry-core.api

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
public final class io/sentry/opentelemetry/OpenTelemetryLinkErrorEventProcessor : io/sentry/EventProcessor {
2+
public fun <init> ()V
3+
public fun process (Lio/sentry/SentryEvent;Lio/sentry/Hint;)Lio/sentry/SentryEvent;
4+
}
5+
16
public final class io/sentry/opentelemetry/OtelSpanInfo {
27
public fun <init> (Ljava/lang/String;Ljava/lang/String;Lio/sentry/protocol/TransactionNameSource;)V
38
public fun getDescription ()Ljava/lang/String;
@@ -26,13 +31,6 @@ public final class io/sentry/opentelemetry/SentrySpanProcessor : io/opentelemetr
2631
public fun onStart (Lio/opentelemetry/context/Context;Lio/opentelemetry/sdk/trace/ReadWriteSpan;)V
2732
}
2833

29-
public final class io/sentry/opentelemetry/SentrySpanStorage {
30-
public fun get (Ljava/lang/String;)Lio/sentry/ISpan;
31-
public static fun getInstance ()Lio/sentry/opentelemetry/SentrySpanStorage;
32-
public fun removeAndGet (Ljava/lang/String;)Lio/sentry/ISpan;
33-
public fun store (Ljava/lang/String;Lio/sentry/ISpan;)V
34-
}
35-
3634
public final class io/sentry/opentelemetry/SpanDescriptionExtractor {
3735
public fun <init> ()V
3836
public fun extractSpanDescription (Lio/opentelemetry/sdk/trace/ReadableSpan;)Lio/sentry/opentelemetry/OtelSpanInfo;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package io.sentry.opentelemetry;
2+
3+
import io.opentelemetry.api.trace.Span;
4+
import io.opentelemetry.api.trace.SpanId;
5+
import io.opentelemetry.api.trace.TraceId;
6+
import io.sentry.EventProcessor;
7+
import io.sentry.Hint;
8+
import io.sentry.HubAdapter;
9+
import io.sentry.ISpan;
10+
import io.sentry.Instrumenter;
11+
import io.sentry.SentryEvent;
12+
import io.sentry.SentrySpanStorage;
13+
import io.sentry.SpanContext;
14+
import io.sentry.protocol.SentryId;
15+
import org.jetbrains.annotations.NotNull;
16+
import org.jetbrains.annotations.Nullable;
17+
18+
public final class OpenTelemetryLinkErrorEventProcessor implements EventProcessor {
19+
20+
private final @NotNull SentrySpanStorage spanStorage = SentrySpanStorage.getInstance();
21+
22+
@Override
23+
public @Nullable SentryEvent process(final @NotNull SentryEvent event, final @NotNull Hint hint) {
24+
if (Instrumenter.OTEL.equals(HubAdapter.getInstance().getOptions().getInstrumenter())) {
25+
@NotNull final Span otelSpan = Span.current();
26+
@NotNull final String traceId = otelSpan.getSpanContext().getTraceId();
27+
@NotNull final String spanId = otelSpan.getSpanContext().getSpanId();
28+
29+
if (TraceId.isValid(traceId) && SpanId.isValid(spanId)) {
30+
final @Nullable ISpan sentrySpan = spanStorage.get(spanId);
31+
if (sentrySpan != null) {
32+
final @NotNull SpanContext sentrySpanSpanContext = sentrySpan.getSpanContext();
33+
final @NotNull String operation = sentrySpanSpanContext.getOperation();
34+
final @Nullable io.sentry.SpanId parentSpanId = sentrySpanSpanContext.getParentSpanId();
35+
final @NotNull SpanContext spanContext =
36+
new SpanContext(
37+
new SentryId(traceId),
38+
new io.sentry.SpanId(spanId),
39+
operation,
40+
parentSpanId,
41+
null);
42+
43+
event.getContexts().setTrace(spanContext);
44+
}
45+
}
46+
}
47+
48+
return event;
49+
}
50+
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import io.sentry.Baggage;
1212
import io.sentry.BaggageHeader;
1313
import io.sentry.ISpan;
14+
import io.sentry.SentrySpanStorage;
1415
import io.sentry.SentryTraceHeader;
1516
import io.sentry.exception.InvalidSentryTraceHeaderException;
1617
import java.util.Arrays;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import io.sentry.ISpan;
2020
import io.sentry.ITransaction;
2121
import io.sentry.Instrumenter;
22+
import io.sentry.SentrySpanStorage;
2223
import io.sentry.SentryTraceHeader;
2324
import io.sentry.SpanId;
2425
import io.sentry.SpanStatus;

sentry/api/sentry.api

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1562,6 +1562,13 @@ public abstract interface class io/sentry/SentryOptions$TracesSamplerCallback {
15621562
public abstract fun sample (Lio/sentry/SamplingContext;)Ljava/lang/Double;
15631563
}
15641564

1565+
public final class io/sentry/SentrySpanStorage {
1566+
public fun get (Ljava/lang/String;)Lio/sentry/ISpan;
1567+
public static fun getInstance ()Lio/sentry/SentrySpanStorage;
1568+
public fun removeAndGet (Ljava/lang/String;)Lio/sentry/ISpan;
1569+
public fun store (Ljava/lang/String;Lio/sentry/ISpan;)V
1570+
}
1571+
15651572
public final class io/sentry/SentryTraceHeader {
15661573
public static final field SENTRY_TRACE_HEADER Ljava/lang/String;
15671574
public fun <init> (Lio/sentry/protocol/SentryId;Lio/sentry/SpanId;Ljava/lang/Boolean;)V
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
package io.sentry.opentelemetry;
1+
package io.sentry;
22

3-
import io.sentry.ISpan;
43
import java.util.Map;
54
import java.util.concurrent.ConcurrentHashMap;
65
import org.jetbrains.annotations.ApiStatus;

0 commit comments

Comments
 (0)