Skip to content

Simplify config.js by removing _setValue helper #5855

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

Merged
merged 4 commits into from
Jun 19, 2025

Conversation

BridgeAR
Copy link
Collaborator

@BridgeAR BridgeAR commented Jun 8, 2025

This is a very first of a series of PRs that I want to open to simplify our current config.js file.

Why start with this? It is one small step and having all changes in one go is impossible, due to the code changes necessary otherwise. We also touch this file frequently, so it's likely to otherwise cause issues during development.

Longterm goal would be to have a small config.js file. Most of what we do there does not need to be code at all.
For example all default values could be moved into the supported-configurations.json file. All setBoolean values etc. would be later on changed to just do the transformation directly on the value before assigning it. The type should also be places inside of supported-configurations.json. That way all needed transformations would happen consistently. Right now it is always up to the author to implement it properly and we have multiple different handlings for booleans.

Upcoming PRs to simplify are roughly:

  1. Move defaults to supported-configuration.json
  2. Replace coalesce calls with ?? in all places and refactor the code to remove that dependency
  3. Instead of using instance methods that set the value, transform the value before assigning it
  4. Define the format in supported-configurations.json
  5. Handle all environment variables that don't need special logic in config-helper, so that no code needs to deal with it and the value can just be read already being transformed correctly (potentially joined with the next step)
  6. Place all option names in supported-configurations.json and automatically assign the already transformed value to it. That way almost no code needs to handle these things anymore.
  7. Split config up into dedicated parts for each product, simplifying the overall config object

What is left to be considered?

  1. The current config object has a complex structure. This is likely resolved when reaching step 7. Otherwise this would have to be looked at again.
  2. How telemetry data is handling the raw values vs the transformed ones. Right now, we actually partially transform values before sending the raw values and that should likely change to just send the raw input structure.

Copy link

github-actions bot commented Jun 8, 2025

Overall package size

Self size: 9.7 MB
Deduped: 106.21 MB
No deduping: 106.73 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 8.5.2 | 19.33 MB | 19.34 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @datadog/pprof | 5.8.2 | 9.56 MB | 9.93 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.3 | 2.95 MB | 5.6 MB | | @datadog/wasm-js-rewriter | 4.0.1 | 2.85 MB | 3.58 MB | | @datadog/native-metrics | 3.1.1 | 1.02 MB | 1.43 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | import-in-the-middle | 1.14.0 | 120.58 kB | 841.68 kB | | source-map | 0.7.4 | 226 kB | 226 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | lru-cache | 7.18.3 | 133.92 kB | 133.92 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 5.3.2 | 53.63 kB | 53.63 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | dc-polyfill | 0.1.9 | 25.11 kB | 25.11 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.2 | 23.54 kB | 23.54 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 | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | module-details-from-path | 1.0.4 | 3.96 kB | 3.96 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

Copy link

codecov bot commented Jun 8, 2025

Codecov Report

Attention: Patch coverage is 99.56140% with 1 line in your changes missing coverage. Please review.

Project coverage is 81.52%. Comparing base (020c925) to head (ea59309).
Report is 4 commits behind head on master.

Files with missing lines Patch % Lines
packages/dd-trace/src/config.js 99.56% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #5855      +/-   ##
==========================================
+ Coverage   80.74%   81.52%   +0.77%     
==========================================
  Files         462      456       -6     
  Lines       19920    19440     -480     
==========================================
- Hits        16085    15849     -236     
+ Misses       3835     3591     -244     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Jun 8, 2025

Datadog Report

Branch report: BridgeAR/2025-06-08-simplify-config-1
Commit report: 3c37c47
Test service: dd-trace-js-integration-tests

✅ 0 Failed, 1252 Passed, 0 Skipped, 19m 55.42s Total Time

@BridgeAR BridgeAR marked this pull request as ready for review June 8, 2025 11:16
@BridgeAR BridgeAR requested a review from a team as a code owner June 8, 2025 11:16
@BridgeAR BridgeAR force-pushed the BridgeAR/2025-06-08-simplify-config-1 branch from b742250 to effdb87 Compare June 18, 2025 13:52
@pr-commenter
Copy link

pr-commenter bot commented Jun 18, 2025

Benchmarks

Benchmark execution time: 2025-06-18 15:34:17

Comparing candidate commit ea59309 in PR branch BridgeAR/2025-06-08-simplify-config-1 with baseline commit 020c925 in branch master.

Found 0 performance improvements and 2 performance regressions! Performance is the same for 939 metrics, 36 unstable metrics.

scenario:startup-with-tracer-22

  • 🟥 cpu_user_time [+19.871ms; +27.705ms] or [+11.058%; +15.417%]
  • 🟥 execution_time [+19.352ms; +21.677ms] or [+7.826%; +8.766%]

@watson watson merged commit 2f99f41 into master Jun 19, 2025
536 checks passed
@watson watson deleted the BridgeAR/2025-06-08-simplify-config-1 branch June 19, 2025 05:08
@dd-trace-js dd-trace-js bot mentioned this pull request Jun 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants