From b31a8cdec2e1a40edf4ed2812400d52a5f74961b Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Wed, 4 Dec 2024 18:52:05 +0100 Subject: [PATCH] fix(sdk-trace-base): don't load envs top level Right now `@opentelemetry/sdk-trace-base` loads `OTEL_*` env vars when it is loaded, regardless of if `loadDefaultConfig` is ever called. In runtimes with a permission model like Deno, this may cause a bunch of permission prompts right on startup. This PR changes the env vars to all be loaded when `loadDefaultConfig` is called. Interestingly, previously only `buildSamplerFromEnv` used the "global" env vars. For all other options the env vars are re-read on every call to `loadDefaultConfig`. --- .../src/config.ts | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/packages/opentelemetry-sdk-trace-base/src/config.ts b/packages/opentelemetry-sdk-trace-base/src/config.ts index f2b97ff8119..bf767a61670 100644 --- a/packages/opentelemetry-sdk-trace-base/src/config.ts +++ b/packages/opentelemetry-sdk-trace-base/src/config.ts @@ -22,7 +22,6 @@ import { AlwaysOnSampler } from './sampler/AlwaysOnSampler'; import { ParentBasedSampler } from './sampler/ParentBasedSampler'; import { TraceIdRatioBasedSampler } from './sampler/TraceIdRatioBasedSampler'; -const env = getEnv(); const FALLBACK_OTEL_TRACES_SAMPLER = TracesSamplerValues.AlwaysOn; const DEFAULT_RATIO = 1; @@ -36,23 +35,23 @@ const DEFAULT_RATIO = 1; // object needs to be wrapped in this function and called when needed otherwise // envs are parsed before tests are ran - causes tests using these envs to fail export function loadDefaultConfig() { - const _env = getEnv(); + const env = getEnv(); return { sampler: buildSamplerFromEnv(env), forceFlushTimeoutMillis: 30000, generalLimits: { - attributeValueLengthLimit: _env.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT, - attributeCountLimit: _env.OTEL_ATTRIBUTE_COUNT_LIMIT, + attributeValueLengthLimit: env.OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT, + attributeCountLimit: env.OTEL_ATTRIBUTE_COUNT_LIMIT, }, spanLimits: { - attributeValueLengthLimit: _env.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT, - attributeCountLimit: _env.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT, - linkCountLimit: _env.OTEL_SPAN_LINK_COUNT_LIMIT, - eventCountLimit: _env.OTEL_SPAN_EVENT_COUNT_LIMIT, + attributeValueLengthLimit: env.OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT, + attributeCountLimit: env.OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT, + linkCountLimit: env.OTEL_SPAN_LINK_COUNT_LIMIT, + eventCountLimit: env.OTEL_SPAN_EVENT_COUNT_LIMIT, attributePerEventCountLimit: - _env.OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT, - attributePerLinkCountLimit: _env.OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT, + env.OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT, + attributePerLinkCountLimit: env.OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT, }, mergeResourceWithDefaults: true, };