From 31380acd0839cca5e1a28137003574063bbf6d15 Mon Sep 17 00:00:00 2001 From: Amir Blum Date: Tue, 8 Feb 2022 04:53:29 +0200 Subject: [PATCH 1/5] fix(exporter-jaeger): add env variable for agent port (#2754) --- packages/opentelemetry-core/src/utils/environment.ts | 2 ++ .../opentelemetry-core/test/utils/environment.test.ts | 2 ++ packages/opentelemetry-exporter-jaeger/src/jaeger.ts | 1 + .../opentelemetry-exporter-jaeger/test/jaeger.test.ts | 9 +++++++-- 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/packages/opentelemetry-core/src/utils/environment.ts b/packages/opentelemetry-core/src/utils/environment.ts index 7df0be698c..e3bcfd8623 100644 --- a/packages/opentelemetry-core/src/utils/environment.ts +++ b/packages/opentelemetry-core/src/utils/environment.ts @@ -34,6 +34,7 @@ const ENVIRONMENT_NUMBERS_KEYS = [ 'OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT', 'OTEL_SPAN_EVENT_COUNT_LIMIT', 'OTEL_SPAN_LINK_COUNT_LIMIT', + 'OTEL_EXPORTER_JAEGER_AGENT_PORT', ] as const; type ENVIRONMENT_NUMBERS = { @@ -109,6 +110,7 @@ export const DEFAULT_ENVIRONMENT: Required = { OTEL_BSP_MAX_QUEUE_SIZE: 2048, OTEL_BSP_SCHEDULE_DELAY: 5000, OTEL_EXPORTER_JAEGER_AGENT_HOST: '', + OTEL_EXPORTER_JAEGER_AGENT_PORT: 6832, OTEL_EXPORTER_JAEGER_ENDPOINT: '', OTEL_EXPORTER_JAEGER_PASSWORD: '', OTEL_EXPORTER_JAEGER_USER: '', diff --git a/packages/opentelemetry-core/test/utils/environment.test.ts b/packages/opentelemetry-core/test/utils/environment.test.ts index 4ab3518645..e336eeeca5 100644 --- a/packages/opentelemetry-core/test/utils/environment.test.ts +++ b/packages/opentelemetry-core/test/utils/environment.test.ts @@ -78,6 +78,7 @@ describe('environment', () => { OTEL_BSP_MAX_EXPORT_BATCH_SIZE: 40, OTEL_BSP_SCHEDULE_DELAY: 50, OTEL_EXPORTER_JAEGER_AGENT_HOST: 'host.domain.com', + OTEL_EXPORTER_JAEGER_AGENT_PORT: 1234, OTEL_EXPORTER_JAEGER_ENDPOINT: 'https://example.com/endpoint', OTEL_EXPORTER_JAEGER_PASSWORD: 'secret', OTEL_EXPORTER_JAEGER_USER: 'whoami', @@ -112,6 +113,7 @@ describe('environment', () => { env.OTEL_EXPORTER_JAEGER_AGENT_HOST, 'host.domain.com' ); + assert.strictEqual(env.OTEL_EXPORTER_JAEGER_AGENT_PORT, 1234); assert.strictEqual( env.ECS_CONTAINER_METADATA_URI_V4, 'https://ecs.uri/v4' diff --git a/packages/opentelemetry-exporter-jaeger/src/jaeger.ts b/packages/opentelemetry-exporter-jaeger/src/jaeger.ts index ec9634793e..0ba979db04 100644 --- a/packages/opentelemetry-exporter-jaeger/src/jaeger.ts +++ b/packages/opentelemetry-exporter-jaeger/src/jaeger.ts @@ -53,6 +53,7 @@ export class JaegerExporter implements SpanExporter { localConfig.password = localConfig.password || env.OTEL_EXPORTER_JAEGER_PASSWORD; localConfig.host = localConfig.host || env.OTEL_EXPORTER_JAEGER_AGENT_HOST; + localConfig.port = localConfig.port || env.OTEL_EXPORTER_JAEGER_AGENT_PORT; this._localConfig = localConfig; diff --git a/packages/opentelemetry-exporter-jaeger/test/jaeger.test.ts b/packages/opentelemetry-exporter-jaeger/test/jaeger.test.ts index 6193796268..738f9b9ce7 100644 --- a/packages/opentelemetry-exporter-jaeger/test/jaeger.test.ts +++ b/packages/opentelemetry-exporter-jaeger/test/jaeger.test.ts @@ -116,8 +116,9 @@ describe('JaegerExporter', () => { assert.strictEqual(sender._host, 'localhost'); }); - it('should respect jaeger host env variable', () => { + it('should respect jaeger host and port env variable', () => { process.env.OTEL_EXPORTER_JAEGER_AGENT_HOST = 'env-set-host'; + process.env.OTEL_EXPORTER_JAEGER_AGENT_PORT = '1234'; const exporter = new JaegerExporter(); const sender = exporter['_getSender']({ tags: [{ @@ -126,12 +127,15 @@ describe('JaegerExporter', () => { }] } as any); assert.strictEqual(sender._host, 'env-set-host'); + assert.strictEqual(sender._port, 1234); }); - it('should prioritize host option over env variable', () => { + it('should prioritize host and port option over env variable', () => { process.env.OTEL_EXPORTER_JAEGER_AGENT_HOST = 'env-set-host'; + process.env.OTEL_EXPORTER_JAEGER_AGENT_PORT = '1234'; const exporter = new JaegerExporter({ host: 'option-set-host', + port: 5678 }); const sender = exporter['_getSender']({ tags: [{ @@ -140,6 +144,7 @@ describe('JaegerExporter', () => { }] } as any); assert.strictEqual(sender._host, 'option-set-host'); + assert.strictEqual(sender._port, 5678); }); it('should construct an exporter with flushTimeout', () => { From ed043be4cfc2295e8c9a71f8099ae50bd860795e Mon Sep 17 00:00:00 2001 From: Svetlana Brennan <50715937+svetlanabrennan@users.noreply.github.com> Date: Mon, 7 Feb 2022 21:02:12 -0600 Subject: [PATCH 2/5] docs(otlp-grpc-exporter): update default url (#2726) Signed-off-by: Svetlana Brennan Co-authored-by: Valentin Marchaud Co-authored-by: legendecas --- packages/exporter-trace-otlp-grpc/README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/exporter-trace-otlp-grpc/README.md b/packages/exporter-trace-otlp-grpc/README.md index f54acbe43b..85e7b66316 100644 --- a/packages/exporter-trace-otlp-grpc/README.md +++ b/packages/exporter-trace-otlp-grpc/README.md @@ -26,8 +26,8 @@ const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc'); const collectorOptions = { - // url is optional and can be omitted - default is grpc://localhost:4317 - url: 'grpc://:', + // url is optional and can be omitted - default is localhost:4317 + url: ':', }; const provider = new BasicTracerProvider(); @@ -50,8 +50,8 @@ const { BasicTracerProvider, SimpleSpanProcessor } = require('@opentelemetry/sdk const { OTLPTraceExporter } = require('@opentelemetry/exporter-trace-otlp-grpc'); const collectorOptions = { - // url is optional and can be omitted - default is grpc://localhost:4317 - url: 'grpc://:', + // url is optional and can be omitted - default is localhost:4317 + url: ':', credentials: grpc.credentials.createSsl(), }; @@ -90,8 +90,8 @@ const metadata = new grpc.Metadata(); metadata.set('k', 'v'); const collectorOptions = { - // url is optional and can be omitted - default is grpc://localhost:4317 - url: 'grpc://:', + // url is optional and can be omitted - default is localhost:4317 + url: ':', metadata, // // an optional grpc.Metadata object to be sent with each request }; From 4f8849fc778972c09d47894a8b045f19ebbd3591 Mon Sep 17 00:00:00 2001 From: Will Li Date: Wed, 9 Feb 2022 11:24:01 +0800 Subject: [PATCH 3/5] docs: specify minimum version of npm to run command in subproject (#2728) Signed-off-by: Cuichen Li Co-authored-by: legendecas --- CONTRIBUTING.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c6875b4375..922a1a4674 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -107,6 +107,9 @@ npm run clean These commands can also be run for specific packages instead of the whole project, which can speed up compilations while developing. +**NOTE**: To run commands in specific packages (compile, lint, etc), please ensure you are using at least `7.x` +version of `npm`. + ```sh # Build a single module and all of its dependencies cd packages/opentelemetry-module-name From 1dd8a89f8a4617ce6a082a24c2fbab29acff1809 Mon Sep 17 00:00:00 2001 From: Chris Karcher Date: Tue, 8 Feb 2022 22:06:50 -0600 Subject: [PATCH 4/5] feat(baggage): include baggage metadata when propagating baggage entries (#2766) Co-authored-by: legendecas --- .../opentelemetry-core/src/baggage/utils.ts | 17 +++++++++++------ .../test/baggage/W3CBaggagePropagator.test.ts | 6 ++++-- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/packages/opentelemetry-core/src/baggage/utils.ts b/packages/opentelemetry-core/src/baggage/utils.ts index 6292866cab..f75fe0cfc9 100644 --- a/packages/opentelemetry-core/src/baggage/utils.ts +++ b/packages/opentelemetry-core/src/baggage/utils.ts @@ -32,12 +32,17 @@ export function serializeKeyPairs(keyPairs: string[]): string { } export function getKeyPairs(baggage: Baggage): string[] { - return baggage - .getAllEntries() - .map( - ([key, value]) => - `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}` - ); + return baggage.getAllEntries().map(([key, value]) => { + let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`; + + // include opaque metadata if provided + // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation + if (value.metadata !== undefined) { + entry += BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString(); + } + + return entry; + }); } export function parsePairKeyValue(entry: string): ParsedBaggageKeyValue | undefined { diff --git a/packages/opentelemetry-core/test/baggage/W3CBaggagePropagator.test.ts b/packages/opentelemetry-core/test/baggage/W3CBaggagePropagator.test.ts index d00ce0c4b4..38de668087 100644 --- a/packages/opentelemetry-core/test/baggage/W3CBaggagePropagator.test.ts +++ b/packages/opentelemetry-core/test/baggage/W3CBaggagePropagator.test.ts @@ -20,6 +20,7 @@ import { defaultTextMapGetter, defaultTextMapSetter, propagation, + baggageEntryMetadataFromString } from '@opentelemetry/api'; import { ROOT_CONTEXT } from '@opentelemetry/api'; import * as assert from 'assert'; @@ -39,8 +40,9 @@ describe('W3CBaggagePropagator', () => { it('should set baggage header', () => { const baggage = propagation.createBaggage({ key1: { value: 'd4cda95b652f4a1592b449d5929fda1b' }, - key3: { value: 'c88815a7-0fa9-4d95-a1f1-cdccce3c5c2a' }, 'with/slash': { value: 'with spaces' }, + key3: { value: 'c88815a7-0fa9-4d95-a1f1-cdccce3c5c2a' }, + key4: { value: 'foo', metadata: baggageEntryMetadataFromString('key4prop1=value1;key4prop2=value2;key4prop3WithNoValue') } }); httpBaggagePropagator.inject( @@ -50,7 +52,7 @@ describe('W3CBaggagePropagator', () => { ); assert.deepStrictEqual( carrier[BAGGAGE_HEADER], - 'key1=d4cda95b652f4a1592b449d5929fda1b,key3=c88815a7-0fa9-4d95-a1f1-cdccce3c5c2a,with%2Fslash=with%20spaces' + 'key1=d4cda95b652f4a1592b449d5929fda1b,with%2Fslash=with%20spaces,key3=c88815a7-0fa9-4d95-a1f1-cdccce3c5c2a,key4=foo;key4prop1=value1;key4prop2=value2;key4prop3WithNoValue' ); }); From 4fa32702704988d734d1aec2cd843d6919cb5a68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gerhard=20St=C3=B6bich?= Date: Wed, 9 Feb 2022 08:36:27 +0100 Subject: [PATCH 5/5] fix: sync webpack version used (#2758) Use the same webpack version used to avoid npm install to fail because of peer dependencies can't be resolved. Co-authored-by: legendecas --- packages/template/package.json | 2 +- selenium-tests/package.json | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/template/package.json b/packages/template/package.json index 956ba645f3..1dfeb7dc87 100644 --- a/packages/template/package.json +++ b/packages/template/package.json @@ -90,6 +90,6 @@ "karma-mocha": "2.0.1", "karma-spec-reporter": "0.0.32", "karma-webpack": "4.0.2", - "webpack": "4.44.2" + "webpack": "4.46.0" } } diff --git a/selenium-tests/package.json b/selenium-tests/package.json index be317b7b57..f4efd16959 100644 --- a/selenium-tests/package.json +++ b/selenium-tests/package.json @@ -46,8 +46,8 @@ "geckodriver": "2.0.4", "nightwatch": "1.7.12", "selenium-server": "3.141.59", - "terser-webpack-plugin": "5.2.5", - "webpack": "5.64.1", + "terser-webpack-plugin": "4.2.3", + "webpack": "4.46.0", "webpack-cli": "4.9.1", "webpack-dev-server": "4.5.0", "webpack-merge": "5.8.0"