Skip to content

Commit 765c1c8

Browse files
author
cod1k
committed
Enhance setupOpenTelemetryTracer to chain existing TracerProvider and improve SentryCloudflareTracer integration.
1 parent a89aa3d commit 765c1c8

File tree

1 file changed

+19
-10
lines changed
  • packages/cloudflare/src/opentelemetry

1 file changed

+19
-10
lines changed

packages/cloudflare/src/opentelemetry/tracer.ts

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,20 @@ import { startInactiveSpan, startSpanManual } from '@sentry/core';
77
* This is not perfect but handles easy/common use cases.
88
*/
99
export function setupOpenTelemetryTracer(): void {
10-
trace.setGlobalTracerProvider(new SentryCloudflareTraceProvider());
10+
const current = trace.getTracerProvider();
11+
trace.setGlobalTracerProvider(new SentryCloudflareTraceProvider(current));
1112
}
1213

1314
class SentryCloudflareTraceProvider implements TracerProvider {
1415
private readonly _tracers: Map<string, Tracer> = new Map();
1516

17+
public constructor(private readonly _provider: TracerProvider) {}
18+
1619
public getTracer(name: string, version?: string, options?: { schemaUrl?: string }): Tracer {
1720
const key = `${name}@${version || ''}:${options?.schemaUrl || ''}`;
1821
if (!this._tracers.has(key)) {
19-
this._tracers.set(key, new SentryCloudflareTracer());
22+
const tracer = this._provider.getTracer(key, version, options);
23+
this._tracers.set(key, new SentryCloudflareTracer(tracer));
2024
}
2125

2226
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -25,15 +29,20 @@ class SentryCloudflareTraceProvider implements TracerProvider {
2529
}
2630

2731
class SentryCloudflareTracer implements Tracer {
32+
public constructor(private readonly _tracer: Tracer) {}
2833
public startSpan(name: string, options?: SpanOptions): Span {
29-
return startInactiveSpan({
30-
name,
31-
...options,
32-
attributes: {
33-
...options?.attributes,
34-
'sentry.cloudflare_tracer': true,
35-
},
36-
});
34+
try {
35+
return startInactiveSpan({
36+
name,
37+
...options,
38+
attributes: {
39+
...options?.attributes,
40+
'sentry.cloudflare_tracer': true,
41+
},
42+
});
43+
} finally {
44+
this._tracer.startSpan(name, options);
45+
}
3746
}
3847

3948
/**

0 commit comments

Comments
 (0)