-
Notifications
You must be signed in to change notification settings - Fork 360
Add class ConfigEnvSources to merge stable config and environment variables #6982
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Overall package sizeSelf size: 13.62 MB Dependency sizes| name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 10.3.0 | 20.73 MB | 20.74 MB | | @datadog/pprof | 5.12.0 | 11.19 MB | 11.57 MB | | @datadog/native-iast-taint-tracking | 4.1.0 | 9.01 MB | 9.02 MB | | @opentelemetry/resources | 1.30.1 | 557.67 kB | 7.71 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.4 | 2.95 MB | 5.83 MB | | @datadog/wasm-js-rewriter | 5.0.1 | 2.82 MB | 3.53 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api-logs | 0.208.0 | 199.48 kB | 1.42 MB | | @opentelemetry/api | 1.9.0 | 1.22 MB | 1.22 MB | | jsonpath-plus | 10.3.0 | 617.18 kB | 1.08 MB | | import-in-the-middle | 1.15.0 | 127.66 kB | 856.24 kB | | lru-cache | 10.4.3 | 804.3 kB | 804.3 kB | | @datadog/openfeature-node-server | 0.2.0 | 118.51 kB | 437.19 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | source-map | 0.7.6 | 185.63 kB | 185.63 kB | | pprof-format | 2.2.1 | 163.06 kB | 163.06 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | @isaacs/ttlcache | 2.1.3 | 90.79 kB | 90.79 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 7.0.5 | 63.38 kB | 63.38 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | dc-polyfill | 0.1.10 | 26.73 kB | 26.73 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.3 | 23.74 kB | 23.74 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | semifies | 1.0.0 | 15.84 kB | 15.84 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | ttl-set | 1.0.0 | 4.61 kB | 9.69 kB | | mutexify | 1.4.0 | 5.71 kB | 8.74 kB | | path-to-regexp | 0.1.12 | 6.6 kB | 6.6 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB | | escape-string-regexp | 5.0.0 | 3.66 kB | 3.66 kB |🤖 This report was automatically generated by heaviest-objects-in-the-universe |
This comment has been minimized.
This comment has been minimized.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #6982 +/- ##
==========================================
- Coverage 84.96% 84.86% -0.11%
==========================================
Files 514 518 +4
Lines 21789 22094 +305
==========================================
+ Hits 18513 18749 +236
- Misses 3276 3345 +69 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
BenchmarksBenchmark execution time: 2025-12-05 21:44:19 Comparing candidate commit 51d2443 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 292 metrics, 28 unstable metrics. |
…RE_SERVICEBUS_BATCH_LINKS_ENABLED
…te tests to call resetEnvConfigSources
eacb99d to
a532c6a
Compare
| return | ||
| } | ||
|
|
||
| // cache the file reads |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Tried this here: https://github.com/DataDog/dd-trace-js/pull/7035/files
TLDR not sure it's worth it
…race-js into mtoff/dcfg-getEnv-migration
| if (getEnvironmentVariable('DD_PLAYWRIGHT_WORKER')) { | ||
| return PLAYWRIGHT_WORKER_TRACE_PAYLOAD_CODE | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure what this env var does
| * @returns {string|undefined} | ||
| * @throws {Error} if the configuration is not supported | ||
| */ | ||
| getValueFromEnvSource (name, source) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For reviewers: I created this helper function in here, even though it is only used by ConfigEnvSources, because:
- this class already has access to
supportedConfigurationsandaliases - process.env can only be accessed from inside config-helpers.js (and I agree with that!)
Reviewer tips
The majority of code changes are just replacing
getEnvironmentVariablewithgetResolvedEnv. Feel free to gloss over those changes once you get the idea from a few, and instead focus on:Background
Currently, stable config files and environment variables are only processed when the Config class is instantiated, which happens in tracer.init(). This limits us from earlier access: code that runs before tracer.init() can't access stable config values.
This PR allows us to access stable config values before tracer.init(), when we peek at DD_TRACE env vars.
What does this PR do?
Introduces
ConfigEnvSources- a new class that is responsible for getting stable config input (local & managed file paths, as well as any warnings). TheConfigclass no longer resolves stable config input itself; instead, it relies on the values cached by ConfigEnvSources.ConfigEnvSources also introduces a
getResolvedEnvAPI that resolves configuration from local stable config, environment variables, and fleet stable config in ascending priority order, before theConfigsingleton is initialized. This method can be used instead ofgetEnvironmentVariablewhen we want to see whether particular DD_TRACE configs have been set.Key additions:
Motivation
All environment variables must be set-able via stable config files: RFC
Note
Not all calls to getEnvironmentVariable were replaced by getResolvedEnv. In some cases, we are really looking for an environment variable that is a heuristic for a particular type of environment. Stable config is not relevant in these cases.
Plugin Checklist
Additional Notes