From 8a9eb50fd3803839a83c2dd16913907f718ab901 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Fri, 3 May 2024 10:37:50 +0200 Subject: [PATCH 1/2] feat: Export `spanToBaggageHeader` utility So we have a proper usage path without installing utils & core... --- MIGRATION.md | 2 +- packages/aws-serverless/src/index.ts | 1 + packages/browser/src/exports.ts | 1 + packages/bun/src/index.ts | 1 + packages/core/src/utils/spanUtils.ts | 10 ++++++++++ packages/deno/src/index.ts | 1 + packages/google-cloud-serverless/src/index.ts | 1 + packages/node/src/index.ts | 1 + packages/remix/src/index.server.ts | 1 + packages/sveltekit/src/server/index.ts | 1 + packages/vercel-edge/src/index.ts | 1 + 11 files changed, 20 insertions(+), 1 deletion(-) diff --git a/MIGRATION.md b/MIGRATION.md index a5f64a76f181..ef1f17dcfe7d 100644 --- a/MIGRATION.md +++ b/MIGRATION.md @@ -1721,7 +1721,7 @@ In v8, the Span class is heavily reworked. The following properties & methods ar - `span.traceId`: Use `span.spanContext().traceId` instead. - `span.name`: Use `spanToJSON(span).description` instead. - `span.description`: Use `spanToJSON(span).description` instead. -- `span.getDynamicSamplingContext`: Use `getDynamicSamplingContextFromSpan` utility function instead. +- `span.getDynamicSamplingContext`: Use `spanToBaggageHeader(span)` utility function instead. - `span.tags`: Set tags on the surrounding scope instead, or use attributes. - `span.data`: Use `spanToJSON(span).data` instead. - `span.setTag()`: Use `span.setAttribute()` instead or set tags on the surrounding scope. diff --git a/packages/aws-serverless/src/index.ts b/packages/aws-serverless/src/index.ts index 5d166fce43c8..ade19b700fcd 100644 --- a/packages/aws-serverless/src/index.ts +++ b/packages/aws-serverless/src/index.ts @@ -97,6 +97,7 @@ export { initOpenTelemetry, spanToJSON, spanToTraceHeader, + spanToBaggageHeader, trpcMiddleware, addOpenTelemetryInstrumentation, zodErrorsIntegration, diff --git a/packages/browser/src/exports.ts b/packages/browser/src/exports.ts index 3da765aaa0f7..1b5a9d294144 100644 --- a/packages/browser/src/exports.ts +++ b/packages/browser/src/exports.ts @@ -57,6 +57,7 @@ export { endSession, spanToJSON, spanToTraceHeader, + spanToBaggageHeader, } from '@sentry/core'; export { diff --git a/packages/bun/src/index.ts b/packages/bun/src/index.ts index f0ab0d24e724..3f0be5d7a914 100644 --- a/packages/bun/src/index.ts +++ b/packages/bun/src/index.ts @@ -118,6 +118,7 @@ export { initOpenTelemetry, spanToJSON, spanToTraceHeader, + spanToBaggageHeader, trpcMiddleware, addOpenTelemetryInstrumentation, zodErrorsIntegration, diff --git a/packages/core/src/utils/spanUtils.ts b/packages/core/src/utils/spanUtils.ts index 55b3df65aa2b..8b83effd81f6 100644 --- a/packages/core/src/utils/spanUtils.ts +++ b/packages/core/src/utils/spanUtils.ts @@ -12,6 +12,7 @@ import type { import { addNonEnumerableProperty, dropUndefinedKeys, + dynamicSamplingContextToSentryBaggageHeader, generateSentryTraceHeader, timestampInSeconds, } from '@sentry/utils'; @@ -21,6 +22,7 @@ import { getCurrentScope } from '../currentScopes'; import { getMetricSummaryJsonForSpan, updateMetricSummaryOnSpan } from '../metrics/metric-summary'; import type { MetricType } from '../metrics/types'; import { SEMANTIC_ATTRIBUTE_SENTRY_OP, SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN } from '../semanticAttributes'; +import { getDynamicSamplingContextFromSpan } from '../tracing'; import type { SentrySpan } from '../tracing/sentrySpan'; import { SPAN_STATUS_OK, SPAN_STATUS_UNSET } from '../tracing/spanstatus'; import { _getSpanForScope } from './spanOnScope'; @@ -68,6 +70,14 @@ export function spanToTraceHeader(span: Span): string { return generateSentryTraceHeader(traceId, spanId, sampled); } +/** + * Convert a Span to a baggage header. + */ +export function spanToBaggageHeader(span: Span): string | undefined { + const dsc = getDynamicSamplingContextFromSpan(span); + return dynamicSamplingContextToSentryBaggageHeader(dsc); +} + /** * Convert a span time input intp a timestamp in seconds. */ diff --git a/packages/deno/src/index.ts b/packages/deno/src/index.ts index be740ac22665..a46c052ec2a9 100644 --- a/packages/deno/src/index.ts +++ b/packages/deno/src/index.ts @@ -78,6 +78,7 @@ export { endSession, spanToJSON, spanToTraceHeader, + spanToBaggageHeader, } from '@sentry/core'; export { DenoClient } from './client'; diff --git a/packages/google-cloud-serverless/src/index.ts b/packages/google-cloud-serverless/src/index.ts index d6f774d633f0..79c39e74e870 100644 --- a/packages/google-cloud-serverless/src/index.ts +++ b/packages/google-cloud-serverless/src/index.ts @@ -97,6 +97,7 @@ export { initOpenTelemetry, spanToJSON, spanToTraceHeader, + spanToBaggageHeader, trpcMiddleware, addOpenTelemetryInstrumentation, zodErrorsIntegration, diff --git a/packages/node/src/index.ts b/packages/node/src/index.ts index c209a5d2ab8b..f31c38048aa6 100644 --- a/packages/node/src/index.ts +++ b/packages/node/src/index.ts @@ -110,6 +110,7 @@ export { getRootSpan, spanToJSON, spanToTraceHeader, + spanToBaggageHeader, trpcMiddleware, zodErrorsIntegration, } from '@sentry/core'; diff --git a/packages/remix/src/index.server.ts b/packages/remix/src/index.server.ts index e8b25aa2936f..ff00f7a80e58 100644 --- a/packages/remix/src/index.server.ts +++ b/packages/remix/src/index.server.ts @@ -99,6 +99,7 @@ export { trpcMiddleware, spanToJSON, spanToTraceHeader, + spanToBaggageHeader, addOpenTelemetryInstrumentation, } from '@sentry/node'; diff --git a/packages/sveltekit/src/server/index.ts b/packages/sveltekit/src/server/index.ts index 29f7dfd313a5..8f74221a1c64 100644 --- a/packages/sveltekit/src/server/index.ts +++ b/packages/sveltekit/src/server/index.ts @@ -72,6 +72,7 @@ export { trpcMiddleware, spanToJSON, spanToTraceHeader, + spanToBaggageHeader, addOpenTelemetryInstrumentation, } from '@sentry/node'; diff --git a/packages/vercel-edge/src/index.ts b/packages/vercel-edge/src/index.ts index 031787bebe22..8fbcebf40e8c 100644 --- a/packages/vercel-edge/src/index.ts +++ b/packages/vercel-edge/src/index.ts @@ -73,6 +73,7 @@ export { trpcMiddleware, spanToJSON, spanToTraceHeader, + spanToBaggageHeader, } from '@sentry/core'; export { VercelEdgeClient } from './client'; From e9dd75501ebae3d7a87efb9c2853d0852cc1e67e Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Fri, 3 May 2024 10:47:29 +0200 Subject: [PATCH 2/2] missed this... --- packages/core/src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 743a2e9d9bd8..75f8ceea4b6e 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -67,6 +67,7 @@ export { handleCallbackErrors } from './utils/handleCallbackErrors'; export { parameterize } from './utils/parameterize'; export { spanToTraceHeader, + spanToBaggageHeader, spanToJSON, spanIsSampled, spanToTraceContext,