Skip to content

Commit b4c4094

Browse files
committed
import context manager only when needed
1 parent bb3b7aa commit b4c4094

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

packages/plugins/opentelemetry/src/plugin.ts

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ import {
2929
type Tracer,
3030
} from '@opentelemetry/api';
3131
import '@opentelemetry/api';
32-
import { AsyncLocalStorageContextManager } from '@opentelemetry/context-async-hooks';
3332
import { Resource } from '@opentelemetry/resources';
3433
import { type SpanProcessor } from '@opentelemetry/sdk-trace-base';
3534
import { WebTracerProvider } from '@opentelemetry/sdk-trace-web';
@@ -259,17 +258,23 @@ export function useOpenTelemetry(
259258
asyncAttributes,
260259
);
261260

261+
const contextManager$ =
262+
options.contextManager != undefined
263+
? options.contextManager
264+
: import('@opentelemetry/context-async-hooks').then(
265+
(module) => new module.AsyncLocalStorageContextManager(),
266+
);
267+
262268
preparation$ = mapMaybePromise(exporters$, (exporters) => {
263269
spanProcessors = exporters;
264270
provider = new WebTracerProvider({ resource, spanProcessors });
265-
provider.register({
266-
contextManager:
267-
options.contextManager === false
268-
? undefined
269-
: (options.contextManager ?? new AsyncLocalStorageContextManager()),
271+
return mapMaybePromise(contextManager$, (contextManager) => {
272+
provider.register({
273+
contextManager: contextManager === false ? undefined : contextManager,
274+
});
275+
tracer = options.tracer || trace.getTracer('gateway');
276+
preparation$ = undefined;
270277
});
271-
tracer = options.tracer || trace.getTracer('gateway');
272-
preparation$ = undefined;
273278
});
274279
} else {
275280
tracer = options.tracer || trace.getTracer('gateway');

0 commit comments

Comments
 (0)