Skip to content

Commit 0225010

Browse files
authored
fix: prevent multiple instances of the tracer provider (#545)
* fix: prevent multiple instances of the tracer provider * fix: fetch property directly * fix: typo in import
1 parent f0321bf commit 0225010

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

packages/otel/src/bootstrap/main.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import process from 'node:process'
2+
13
import { trace } from '@opentelemetry/api'
24
import { SugaredTracer } from '@opentelemetry/api/experimental'
35
import { Resource } from '@opentelemetry/resources'
@@ -8,7 +10,6 @@ import { NodeTracerProvider, SimpleSpanProcessor, type SpanProcessor } from '@op
810
import { GET_TRACER, SHUTDOWN_TRACERS } from '../constants.js'
911
import { NetlifySpanExporter } from '../exporters/netlify.js'
1012
import packageJson from '../../package.json' with { type: 'json' }
11-
import process from 'node:process'
1213

1314
export interface TracerProviderOptions {
1415
serviceName: string
@@ -22,6 +23,9 @@ export interface TracerProviderOptions {
2223
}
2324

2425
export const createTracerProvider = (options: TracerProviderOptions) => {
26+
// Prevent multiple tracers from being created
27+
if (Object.prototype.hasOwnProperty.call(globalThis, GET_TRACER)) return
28+
2529
// remove the v prefix from the version to match the spec
2630
const runtimeVersion = process.version.slice(1)
2731

packages/otel/src/main.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import { type SugaredSpanOptions, type SugaredTracer } from '@opentelemetry/api/experimental'
2-
import { GET_TRACER, SHUTDOWN_TRACERS } from './constants.js'
31
import type { Context, Span } from '@opentelemetry/api'
2+
import type { SugaredSpanOptions, SugaredTracer } from '@opentelemetry/api/experimental'
3+
4+
import { GET_TRACER, SHUTDOWN_TRACERS } from './constants.js'
45

56
type GlobalThisExtended = typeof globalThis & {
67
[GET_TRACER]?: (name?: string, version?: string) => SugaredTracer | undefined

0 commit comments

Comments
 (0)