-
Notifications
You must be signed in to change notification settings - Fork 306
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
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
1d72afe
to
10cea31
Compare
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.
LGTM for the Remote Config parts
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.
One minor suggestion, but otherwise LGTM.
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.
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
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.
All issues by this reviewer have been addressed.
Prepare the Node.js tracer to be used with the Dynamic Instrumentation product (DI). 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 commit no information is gathered, but this is a required step once we start to gather the local state snapshot). DI features included in this commit: - Support for line based log probes - Support for loading probes via Remote Configuration - Support for sending probe status to the debugger-backend - Support for sending log data to debugger-backend Please note, that with this commit it's still not possible to use DI with the Node.js tracer as support for using the Node.js tracer with DI has not yet been enabled in the Datadog UI.
Prepare the Node.js tracer to be used with the Dynamic Instrumentation product (DI). 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 commit no information is gathered, but this is a required step once we start to gather the local state snapshot). DI features included in this commit: - Support for line based log probes - Support for loading probes via Remote Configuration - Support for sending probe status to the debugger-backend - Support for sending log data to debugger-backend Please note, that with this commit it's still not possible to use DI with the Node.js tracer as support for using the Node.js tracer with DI has not yet been enabled in the Datadog UI.
Prepare the Node.js tracer to be used with the Dynamic Instrumentation product (DI). 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 commit no information is gathered, but this is a required step once we start to gather the local state snapshot). DI features included in this commit: - Support for line based log probes - Support for loading probes via Remote Configuration - Support for sending probe status to the debugger-backend - Support for sending log data to debugger-backend Please note, that with this commit it's still not possible to use DI with the Node.js tracer as support for using the Node.js tracer with DI has not yet been enabled in the Datadog UI.
Prepare the Node.js tracer to be used with the Dynamic Instrumentation product (DI). 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 commit no information is gathered, but this is a required step once we start to gather the local state snapshot). DI features included in this commit: - Support for line based log probes - Support for loading probes via Remote Configuration - Support for sending probe status to the debugger-backend - Support for sending log data to debugger-backend Please note, that with this commit it's still not possible to use DI with the Node.js tracer as support for using the Node.js tracer with DI has not yet been enabled in the Datadog UI.
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=true
and enable thelive_debugger_language_js
feature flag in the UI.Tasks
test:debugger
during CI, or change to use the Mocha test-runner