Skip to content

Commit

Permalink
Adds better tracer isolation (in theory)
Browse files Browse the repository at this point in the history
  • Loading branch information
eamodio committed Dec 8, 2022
1 parent 1c475c5 commit 4e2e82f
Showing 1 changed file with 16 additions and 12 deletions.
28 changes: 16 additions & 12 deletions 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';
Expand All @@ -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,
Expand All @@ -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
Expand All @@ -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 {
Expand Down

0 comments on commit 4e2e82f

Please sign in to comment.