From b15a25b579aad6ad9c7f5197c2733b88eb23289d Mon Sep 17 00:00:00 2001 From: Martin Kuba Date: Tue, 7 May 2024 17:26:26 -0700 Subject: [PATCH 1/3] feat(sdk-trace-node): add env mapping for xray-lambda propagator --- package-lock.json | 2 ++ packages/opentelemetry-sdk-trace-node/package.json | 1 + .../src/NodeTracerProvider.ts | 2 ++ .../test/NodeTracerProvider.test.ts | 14 ++++++++++++++ .../opentelemetry-sdk-trace-node/tsconfig.json | 3 +++ 5 files changed, 22 insertions(+) diff --git a/package-lock.json b/package-lock.json index 5a016ba803d..ea29c7884f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35274,6 +35274,7 @@ "@opentelemetry/context-async-hooks": "1.24.0", "@opentelemetry/core": "1.24.0", "@opentelemetry/propagator-aws-xray": "1.24.0", + "@opentelemetry/propagator-aws-xray-lambda": "0.51.0", "@opentelemetry/propagator-b3": "1.24.0", "@opentelemetry/propagator-jaeger": "1.24.0", "@opentelemetry/sdk-trace-base": "1.24.0", @@ -45196,6 +45197,7 @@ "@opentelemetry/context-async-hooks": "1.24.0", "@opentelemetry/core": "1.24.0", "@opentelemetry/propagator-aws-xray": "1.24.0", + "@opentelemetry/propagator-aws-xray-lambda": "0.51.0", "@opentelemetry/propagator-b3": "1.24.0", "@opentelemetry/propagator-jaeger": "1.24.0", "@opentelemetry/resources": "1.24.0", diff --git a/packages/opentelemetry-sdk-trace-node/package.json b/packages/opentelemetry-sdk-trace-node/package.json index f2b59159c79..8aeaddcdbab 100644 --- a/packages/opentelemetry-sdk-trace-node/package.json +++ b/packages/opentelemetry-sdk-trace-node/package.json @@ -69,6 +69,7 @@ "@opentelemetry/core": "1.24.0", "@opentelemetry/propagator-b3": "1.24.0", "@opentelemetry/propagator-aws-xray": "1.24.0", + "@opentelemetry/propagator-aws-xray-lambda": "0.51.0", "@opentelemetry/propagator-jaeger": "1.24.0", "@opentelemetry/sdk-trace-base": "1.24.0", "semver": "^7.5.2" diff --git a/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts b/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts index c82b600d93e..f003aa0a949 100644 --- a/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts +++ b/packages/opentelemetry-sdk-trace-node/src/NodeTracerProvider.ts @@ -27,6 +27,7 @@ import * as semver from 'semver'; import { NodeTracerConfig } from './config'; import { JaegerPropagator } from '@opentelemetry/propagator-jaeger'; import { AWSXRayPropagator } from '@opentelemetry/propagator-aws-xray'; +import { AWSXRayLambdaPropagator } from '@opentelemetry/propagator-aws-xray-lambda'; /** * Register this TracerProvider for use with the OpenTelemetry API. @@ -52,6 +53,7 @@ export class NodeTracerProvider extends BasicTracerProvider { ], ['jaeger', () => new JaegerPropagator()], ['xray', () => new AWSXRayPropagator()], + ['xray-lambda', () => new AWSXRayLambdaPropagator()], ]); constructor(config: NodeTracerConfig = {}) { diff --git a/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts b/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts index a0acf0d0d02..163735f9848 100644 --- a/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts +++ b/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts @@ -233,6 +233,9 @@ describe('NodeTracerProvider', () => { } else { delete (process.env as any).OTEL_PROPAGATORS; } + + // unregister global propagator + propagation.disable(); }); it('should allow propagators as per the specification', () => { @@ -252,6 +255,17 @@ describe('NodeTracerProvider', () => { 'x-amzn-trace-id', ]); }); + + it('should allow xray-lambda propagator', () => { + (process.env as any).OTEL_PROPAGATORS = 'xray-lambda'; + + const provider = new NodeTracerProvider(); + provider.register(); + + assert.deepStrictEqual(propagation.fields(), [ + 'x-amzn-trace-id' + ]); + }); }); describe('Custom TracerProvider through inheritance', () => { diff --git a/packages/opentelemetry-sdk-trace-node/tsconfig.json b/packages/opentelemetry-sdk-trace-node/tsconfig.json index a40ddeff365..82c5c9ce489 100644 --- a/packages/opentelemetry-sdk-trace-node/tsconfig.json +++ b/packages/opentelemetry-sdk-trace-node/tsconfig.json @@ -12,6 +12,9 @@ { "path": "../../api" }, + { + "path": "../../experimental/packages/propagator-aws-xray-lambda" + }, { "path": "../opentelemetry-context-async-hooks" }, From 4478913f50ee2adc3f8efcda5542908f103828eb Mon Sep 17 00:00:00 2001 From: Martin Kuba Date: Tue, 7 May 2024 17:38:28 -0700 Subject: [PATCH 2/3] lint --- .../test/NodeTracerProvider.test.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts b/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts index 163735f9848..7cbb611d3b0 100644 --- a/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts +++ b/packages/opentelemetry-sdk-trace-node/test/NodeTracerProvider.test.ts @@ -262,9 +262,7 @@ describe('NodeTracerProvider', () => { const provider = new NodeTracerProvider(); provider.register(); - assert.deepStrictEqual(propagation.fields(), [ - 'x-amzn-trace-id' - ]); + assert.deepStrictEqual(propagation.fields(), ['x-amzn-trace-id']); }); }); From 227439e6cba6a73a5ad06a6ba5afef29dd70e037 Mon Sep 17 00:00:00 2001 From: Martin Kuba Date: Tue, 7 May 2024 17:40:13 -0700 Subject: [PATCH 3/3] updated changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67c447ab70c..67d8c04e0e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ For experimental package changes, see the [experimental CHANGELOG](experimental/ * feat: support node 22 [#4666](https://github.com/open-telemetry/opentelemetry-js/pull/4666) @dyladan * feat(sdk-trace-node): support `xray` Propagator via `OTEL_PROPAGATORS` environment variable [#4602](https://github.com/open-telemetry/opentelemetry-js/pull/4602) @anuraags +* feat(sdk-trace-node): support `xray-lambda` Propagator via `OTEL_PROPAGATORS` environment variable [#4685](https://github.com/open-telemetry/opentelemetry-js/pull/4685) @martinkuba ### :bug: (Bug Fix)