From 032a9b6593eb84594864a7d87de9634644372918 Mon Sep 17 00:00:00 2001 From: Rauno Viskus Date: Mon, 13 Jun 2022 21:54:49 +0300 Subject: [PATCH] fix: override NodeTracerProviders component getters to ensure backwards compatibility --- .../src/NodeTracerProvider.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts b/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts index 484ba4e773d..5fb75d653f7 100644 --- a/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts +++ b/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts @@ -23,6 +23,7 @@ import { BasicTracerProvider, PROPAGATOR_FACTORY, SDKRegistrationConfig, + SpanExporter, } from '@opentelemetry/sdk-trace-base'; import * as semver from 'semver'; import { NodeTracerConfig } from './config'; @@ -69,11 +70,18 @@ export class NodeTracerProvider extends BasicTracerProvider { super.register(config); } - protected override _getPropagator(name: string): TextMapPropagator | undefined { - // TODO: remove this. Overwriting _registered* is sufficient + // Do not override either of the getters in your child class unless you really need to. + // We have to do it here because the previous version of BasicTracerProvider's getters + // had BasicTracerProvider's static method hardcoded. + protected override _getPropagator(name: string): TextMapPropagator | undefined { return ( - super._getPropagator(name) || - NodeTracerProvider._registeredPropagators.get(name)?.() - ); + (this.constructor as any)._registeredPropagators as typeof BasicTracerProvider._registeredPropagators + ).get(name)?.(); + } + + protected override _getSpanExporter(name: string): SpanExporter | undefined { + return ( + (this.constructor as any)._registeredExporters as typeof BasicTracerProvider._registeredExporters + ).get(name)?.(); } }