From b85a39fc52a3a98eff109ab8898d68135fd9443e Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Fri, 29 Sep 2023 11:44:50 +0200 Subject: [PATCH] fix(node-otel): Suppress tracing for generated sentry spans --- packages/opentelemetry-node/src/spanprocessor.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/opentelemetry-node/src/spanprocessor.ts b/packages/opentelemetry-node/src/spanprocessor.ts index 5a0b47358ed2..012ead8b9d3d 100644 --- a/packages/opentelemetry-node/src/spanprocessor.ts +++ b/packages/opentelemetry-node/src/spanprocessor.ts @@ -1,5 +1,6 @@ import type { Context } from '@opentelemetry/api'; -import { SpanKind, trace } from '@opentelemetry/api'; +import { context, SpanKind, trace } from '@opentelemetry/api'; +import { suppressTracing } from '@opentelemetry/core'; import type { Span as OtelSpan, SpanProcessor as OtelSpanProcessor } from '@opentelemetry/sdk-trace-base'; import { addGlobalEventProcessor, addTracingExtensions, getCurrentHub, Transaction } from '@sentry/core'; import type { DynamicSamplingContext, Span as SentrySpan, TraceparentData, TransactionContext } from '@sentry/types'; @@ -121,7 +122,10 @@ export class SentrySpanProcessor implements OtelSpanProcessor { updateSpanWithOtelData(sentrySpan, otelSpan); } - sentrySpan.finish(convertOtelTimeToSeconds(otelSpan.endTime)); + // Ensure we do not capture any OTEL spans for finishing (and sending) this + context.with(suppressTracing(context.active()), () => { + sentrySpan.finish(convertOtelTimeToSeconds(otelSpan.endTime)); + }); clearSpan(otelSpanId); }