Skip to content

Conversation

@BridgeAR
Copy link
Collaborator

This makes sure not instrumented code will always send out the
proper telemetry. Formerly, it would rely on any part of the file
being instrumented. Now, we properly check by version again. To
guarantee it is only logging it once, it is send with a timeout or
before the service ends in case that happens earlier.

It also fixes DD_TRACE_DISABLED_INSTRUMENTATIONS to work for
prefixed and unprefixed Node automatically in case either is
deactivated. Before, both would have to be deactivated.

In addition, it simplifies code, adds some JSDoc and makes sure
the Node.js version is added to Node.js modules in the telemetry /
failures.

This also fixes a couple of tests that were not properly checking
the behavior as some state was captured in the instrumentation.

This is based on another PR.

@codecov
Copy link

codecov bot commented Nov 13, 2025

Codecov Report

❌ Patch coverage is 71.03825% with 53 lines in your changes missing coverage. Please review.
✅ Project coverage is 84.75%. Comparing base (c39e925) to head (f6f9192).
⚠️ Report is 3 commits behind head on master.

Files with missing lines Patch % Lines
...g-instrumentations/src/helpers/bundler-register.js 8.00% 23 Missing ⚠️
...s/datadog-instrumentations/src/helpers/register.js 63.93% 22 Missing ⚠️
...ages/datadog-instrumentations/src/helpers/hooks.js 60.00% 4 Missing ⚠️
...kages/datadog-instrumentations/src/helpers/hook.js 77.77% 2 Missing ⚠️
packages/dd-trace/src/require-package-json.js 75.00% 1 Missing ⚠️
packages/dd-trace/src/ritm.js 96.42% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #6910      +/-   ##
==========================================
- Coverage   84.81%   84.75%   -0.07%     
==========================================
  Files         513      513              
  Lines       21521    21506      -15     
==========================================
- Hits        18253    18227      -26     
- Misses       3268     3279      +11     

☔ 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.

@pr-commenter
Copy link

pr-commenter bot commented Nov 13, 2025

Benchmarks

Benchmark execution time: 2025-11-26 19:31:55

Comparing candidate commit f6f9192 in PR branch BridgeAR/2025-11-13-further-instrumentation-improvements with baseline commit c39e925 in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 288 metrics, 32 unstable metrics.

@github-actions
Copy link

github-actions bot commented Nov 13, 2025

Overall package size

Self size: 13.41 MB
Deduped: 113.61 MB
No deduping: 128.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.2 | 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

@datadog-datadog-prod-us1
Copy link

datadog-datadog-prod-us1 bot commented Nov 13, 2025

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: f6f9192 | Docs | Datadog PR Page | Was this helpful? Give us feedback!

This improves our instrumentations in multiple ways:

- Add JSDoc to many methods that it is easier to work with.
- Fix multiple type errors.
- Remove code that was only used in testing such as `unhook()`.
- Fix small issues in esbuild instrumentation where a module might
  not return a moduleExports object.
- Improve code to run slightly faster (these are not hot code paths).
- Automatically instruments unprefixed Node.js modules when defining
  a instrumentation for a module. This removes the need for much special
  handling (duplicating the instrumentation, using the symbol to detect
  already instrumented calls, etc.).
- Fix using an array as file for some modules. This did not cause any
  issues, but it was not correct.
- Removed unused isIitm arguments in instrumentations.
This is supported by ritm, we just do not utilize it and do not
need it as such.
This makes sure not instrumented code will always send out the
proper telemetry. Formerly, it would rely on any part of the file
being instrumented. Now, we properly check by version again. To
guarantee it is only logging it once, it is send with a timeout or
before the service ends in case that happens earlier.

It also fixes DD_TRACE_DISABLED_INSTRUMENTATIONS to work for
prefixed and unprefixed Node automatically in case either is
deactivated. Before, both would have to be deactivated.

In addition, it simplifies code, adds some JSDoc and makes sure
the Node.js version is added to Node.js modules in the telemetry /
failures.

This also fixes a couple of tests that were not properly checking
the behavior as some state was captured in the instrumentation.
@BridgeAR BridgeAR force-pushed the BridgeAR/2025-11-13-further-instrumentation-improvements branch from 71731fa to 21af9f5 Compare November 20, 2025 04:04
@pabloerhard pabloerhard force-pushed the BridgeAR/2025-11-13-further-instrumentation-improvements branch from f62fe6c to a218578 Compare November 25, 2025 21:51
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