Prepare support for Dynamic Instrumentation#4492
Conversation
Overall package sizeSelf size: 7.13 MB Dependency sizes| name | version | self size | total size | |------|---------|-----------|------------| | @datadog/native-appsec | 8.1.1 | 18.67 MB | 18.68 MB | | @datadog/native-iast-taint-tracking | 3.1.0 | 12.27 MB | 12.28 MB | | @datadog/pprof | 5.3.0 | 9.85 MB | 10.22 MB | | protobufjs | 7.2.5 | 2.77 MB | 5.16 MB | | @datadog/native-iast-rewriter | 2.4.1 | 2.14 MB | 2.23 MB | | @opentelemetry/core | 1.14.0 | 872.87 kB | 1.47 MB | | @datadog/native-metrics | 2.0.0 | 898.77 kB | 1.3 MB | | @opentelemetry/api | 1.8.0 | 1.21 MB | 1.21 MB | | jsonpath-plus | 9.0.0 | 580.4 kB | 1.03 MB | | import-in-the-middle | 1.8.1 | 71.67 kB | 785.15 kB | | msgpack-lite | 0.1.26 | 201.16 kB | 281.59 kB | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | pprof-format | 2.1.0 | 111.69 kB | 111.69 kB | | @datadog/sketches-js | 2.1.0 | 109.9 kB | 109.9 kB | | semver | 7.6.3 | 95.82 kB | 95.82 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | lru-cache | 7.14.0 | 74.95 kB | 74.95 kB | | ignore | 5.3.1 | 51.46 kB | 51.46 kB | | int64-buffer | 0.1.10 | 49.18 kB | 49.18 kB | | shell-quote | 1.8.1 | 44.96 kB | 44.96 kB | | istanbul-lib-coverage | 3.2.0 | 29.34 kB | 29.34 kB | | rfdc | 1.3.1 | 25.21 kB | 25.21 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | limiter | 1.1.5 | 23.17 kB | 23.17 kB | | dc-polyfill | 0.1.4 | 23.1 kB | 23.1 kB | | retry | 0.13.1 | 18.85 kB | 18.85 kB | | jest-docblock | 29.7.0 | 8.99 kB | 12.76 kB | | crypto-randomuuid | 1.0.0 | 11.18 kB | 11.18 kB | | koalas | 1.0.2 | 6.47 kB | 6.47 kB | | path-to-regexp | 0.1.10 | 6.38 kB | 6.38 kB | | module-details-from-path | 1.0.3 | 4.47 kB | 4.47 kB |🤖 This report was automatically generated by heaviest-objects-in-the-universe |
3a18f73 to
7f378db
Compare
63272b6 to
733316e
Compare
cb2e46b to
15468a4
Compare
35c4813 to
dfc947f
Compare
15468a4 to
10a69b2
Compare
Library Vulnerabilities✅ No library vulnerabilities found (scanned 10a69b2). |
fa300e8 to
0e69d6d
Compare
10a69b2 to
39c67f4
Compare
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #4492 +/- ##
==========================================
+ Coverage 83.24% 87.74% +4.50%
==========================================
Files 5 286 +281
Lines 388 12479 +12091
Branches 33 33
==========================================
+ Hits 323 10950 +10627
- Misses 65 1529 +1464 ☔ View full report in Codecov by Sentry. |
39c67f4 to
3c46a83
Compare
This stack of pull requests is managed by Graphite. Learn more about stacking. |
0e69d6d to
d2c0b2c
Compare
3c46a83 to
ee3afc9
Compare
d2c0b2c to
401da13
Compare
7715a01 to
781e729
Compare
simon-id
left a comment
There was a problem hiding this comment.
LGTM for the Remote Config parts
Qard
left a comment
There was a problem hiding this comment.
One minor suggestion, but otherwise LGTM.
simon-id
left a comment
There was a problem hiding this comment.
reapproving after small commit
|
|
||
| async function start () { | ||
| sessionStarted = true | ||
| return session.post('Debugger.enable') // return instead of await to reduce number of promises created |
There was a problem hiding this comment.
This is a non-blocker, but maybe in a future PR you can make methods on Session that will post these messages so that we don't have to have these constant strings hanging around everywhere a post() happens.

Prepare the Node.js tracer to be used with the Dynamic Instrumentation product (DI).
Please note, that even after this PR has been merged, it's not possible to use DI with the Node.js tracer, as 1) this isn't the full implementation and 2) the Datadog UI hasn't been updated to support DI for Node.js applications (it's currently behind a feature flag that needs to be enabled by Datadog).
Implementation details
Probes are added as breakpoints using the V8 Inspector Protocol. The inspector runs in a worker thread and will pause the main thread temporarily while gathering the required information related to the probe (as of this PR no information is gathered, but this is a required step once we start to gather the local state snapshot).
Included in this PR
Out of scope for this PR
Notes to reviewers
To enable, set
DD_DYNAMIC_INSTRUMENTATION_ENABLED=trueand enable thelive_debugger_language_jsfeature flag in the UI.Tasks
test:debuggerduring CI, or change to use the Mocha test-runner