Skip to content

Commit

Permalink
fix: override NodeTracerProviders component getters to ensure backwar…
Browse files Browse the repository at this point in the history
…ds compatibility
  • Loading branch information
rauno56 committed Jun 14, 2022
1 parent 1b8b086 commit 032a9b6
Showing 1 changed file with 13 additions and 5 deletions.
18 changes: 13 additions & 5 deletions packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import {
BasicTracerProvider,
PROPAGATOR_FACTORY,
SDKRegistrationConfig,
SpanExporter,
} from '@opentelemetry/sdk-trace-base';
import * as semver from 'semver';
import { NodeTracerConfig } from './config';
Expand Down Expand Up @@ -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)?.();
}
}

0 comments on commit 032a9b6

Please sign in to comment.