-
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
[DI] Add ability to take state snapshot #4549
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
Overall package sizeSelf size: 7.3 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.11.2 | 112.74 kB | 826.22 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 |
BenchmarksBenchmark execution time: 2024-10-03 13:05:13 Comparing candidate commit c4dc156 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 259 metrics, 7 unstable metrics. |
781e729
to
5cb52d8
Compare
8639412
to
60ed8b6
Compare
5cb52d8
to
4a218af
Compare
60ed8b6
to
8af7e4d
Compare
4a218af
to
5322061
Compare
8af7e4d
to
39fea38
Compare
5322061
to
721af8a
Compare
39fea38
to
30f6795
Compare
721af8a
to
e98c0f8
Compare
30f6795
to
c214942
Compare
e98c0f8
to
8d71c7c
Compare
c214942
to
d4f1f8a
Compare
8d71c7c
to
46af3b2
Compare
d4f1f8a
to
b6e69cd
Compare
46af3b2
to
605f994
Compare
b6e69cd
to
eb10ac7
Compare
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## watson/DEBUG-2532/di #4549 +/- ##
========================================================
- Coverage 88.44% 88.11% -0.33%
========================================================
Files 263 259 -4
Lines 11371 11303 -68
Branches 33 33
========================================================
- Hits 10057 9960 -97
- Misses 1314 1343 +29 ☔ View full report in Codecov by Sentry. |
605f994
to
12dde05
Compare
eb10ac7
to
ed941b7
Compare
12dde05
to
83be4f5
Compare
ed941b7
to
92c4a1e
Compare
83be4f5
to
cf6e059
Compare
92c4a1e
to
cc2f756
Compare
cf6e059
to
1570261
Compare
216dceb
to
0edd783
Compare
22f8505
to
17043fa
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.
great progress
packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js
Outdated
Show resolved
Hide resolved
packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js
Outdated
Show resolved
Hide resolved
packages/dd-trace/src/debugger/devtools_client/snapshot/processor.js
Outdated
Show resolved
Hide resolved
17043fa
to
c4dc156
Compare
} | ||
|
||
// TODO: The following extra information from `internalProperties` might be relevant to include for functions: | ||
// - Bound function: `[[TargetFunction]]`, `[[BoundThis]]` and `[[BoundArgs]]` |
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 would love to sit down and see examples of each of those.
I think capture the BoundThis would be beneficial for debugging - as it would let the user know what the instance that was bounded.
What I'm not sure if those also expose as locals and args (specifically for BoundArgs) - if they are duplicated, not sure this worth the effort. but if they are not captured, I think those values would improve the debug experience.
c4dc156
to
43dd45a
Compare
Take a "snapshot" of the variables that are in scope when a probe is hit (except the global scope, which intentionally have been omitted since it's too noisy): - For each variable in scope, we traverse objects and their properties up to `maxReferenceDepth` deep (default is 3 levels). - Strings are truncated to `maxLength` (default is 255 characters). - Binary data is converted to strings with appropriate escaping of non printable characters (the `maxLength` limit is also applied) Out of scope: - Information about `this` is not captured. - maxCollectionSize limit - maxFieldCount limit - Special handling for snapshots larger than 1MB (e.g. snapshot pruning or something simpler) - PII redaction
Take a "snapshot" of the variables that are in scope when a probe is hit (except the global scope, which intentionally have been omitted since it's too noisy): - For each variable in scope, we traverse objects and their properties up to `maxReferenceDepth` deep (default is 3 levels). - Strings are truncated to `maxLength` (default is 255 characters). - Binary data is converted to strings with appropriate escaping of non printable characters (the `maxLength` limit is also applied) Out of scope: - Information about `this` is not captured. - maxCollectionSize limit - maxFieldCount limit - Special handling for snapshots larger than 1MB (e.g. snapshot pruning or something simpler) - PII redaction
Take a "snapshot" of the variables that are in scope when a probe is hit (except the global scope, which intentionally have been omitted since it's too noisy): - For each variable in scope, we traverse objects and their properties up to `maxReferenceDepth` deep (default is 3 levels). - Strings are truncated to `maxLength` (default is 255 characters). - Binary data is converted to strings with appropriate escaping of non printable characters (the `maxLength` limit is also applied) Out of scope: - Information about `this` is not captured. - maxCollectionSize limit - maxFieldCount limit - Special handling for snapshots larger than 1MB (e.g. snapshot pruning or something simpler) - PII redaction
Take a "snapshot" of the variables that are in scope when a probe is hit (except the global scope, which intentionally have been omitted since it's too noisy):
maxReferenceDepth
deep (default i 3 levels).maxLength
(default is 255 characters).maxLength
limit is also applied)Out of scope:
this
is not captured.Note to reviewers
The algorithm to collect the snapshot is located in:
The post-processing of the collected state to get it into the format expected by the DI endpoint is located in:
To make it easier to understand what data is being operated on in
processor.js
when reviewing, here's some example data from two of the unit tests inpackages/dd-trace/test/debugger/devtools_client/snapshot.spec.js
:Output of `collector.js` for primitive types (from the unit test "should return expected object for primitives")
Output of `collector.js` for complex types (from the unit test "should contain expected properties from local and closure scope")