From 4e2e82f610d212f987694f211e409a7c774fe289 Mon Sep 17 00:00:00 2001 From: Eric Amodio <eamodio@gmail.com> Date: Thu, 8 Dec 2022 11:16:09 -0500 Subject: [PATCH] Adds better tracer isolation (in theory) --- src/telemetry/openTelemetryProvider.ts | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/telemetry/openTelemetryProvider.ts b/src/telemetry/openTelemetryProvider.ts index d092f10..269da41 100644 --- a/src/telemetry/openTelemetryProvider.ts +++ b/src/telemetry/openTelemetryProvider.ts @@ -1,12 +1,12 @@ import type { AttributeValue, Span, TimeInput, Tracer } from '@opentelemetry/api'; -import { diag, DiagConsoleLogger, trace } from '@opentelemetry/api'; -import { DiagLogLevel } from '@opentelemetry/api/build/src/diag/types'; +// import { diag, DiagConsoleLogger } from '@opentelemetry/api'; +// import { DiagLogLevel } from '@opentelemetry/api/build/src/diag/types'; import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http'; import { Resource } from '@opentelemetry/resources'; import { BasicTracerProvider, BatchSpanProcessor, - ConsoleSpanExporter, + // ConsoleSpanExporter, SimpleSpanProcessor, } from '@opentelemetry/sdk-trace-base'; import { SemanticResourceAttributes } from '@opentelemetry/semantic-conventions'; @@ -15,10 +15,12 @@ import type { TelemetryContext, TelemetryProvider } from './telemetry'; export class OpenTelemetryProvider implements TelemetryProvider { private _globalAttributes: Record<string, AttributeValue> = {}; + + private readonly provider: BasicTracerProvider; private readonly tracer: Tracer; constructor(context: TelemetryContext, agent?: HttpsProxyAgent, debugging?: boolean) { - const provider = new BasicTracerProvider({ + this.provider = new BasicTracerProvider({ resource: new Resource({ [SemanticResourceAttributes.SERVICE_NAME]: 'gitlens', [SemanticResourceAttributes.SERVICE_VERSION]: context.extensionVersion, @@ -37,10 +39,10 @@ export class OpenTelemetryProvider implements TelemetryProvider { }) as any, }); - if (debugging) { - diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.VERBOSE); - provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter())); - } + // if (debugging) { + // diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.VERBOSE); + // this.provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter())); + // } const exporter = new OTLPTraceExporter({ url: debugging @@ -49,15 +51,17 @@ export class OpenTelemetryProvider implements TelemetryProvider { compression: 'gzip' as any, httpAgentOptions: agent?.options, }); - provider.addSpanProcessor(debugging ? new SimpleSpanProcessor(exporter) : new BatchSpanProcessor(exporter)); + this.provider.addSpanProcessor( + debugging ? new SimpleSpanProcessor(exporter) : new BatchSpanProcessor(exporter), + ); - provider.register(); + this.provider.register(); - this.tracer = trace.getTracer(context.extensionId); + this.tracer = this.provider.getTracer(context.extensionId); } dispose(): void { - trace.disable(); + void this.provider.shutdown(); } sendEvent(name: string, data?: Record<string, AttributeValue>, startTime?: TimeInput, endTime?: TimeInput): void {