dd-trace-js
dd-trace-js copied to clipboard
[DI] Record thread paused telemetry when breakpoint is hit
What does this PR do?
The target thread is paused for some amount of time when ever a breakpoint is hit. Record the amount of time in milliseconds as telemetry.
Motivation
It's important to track how big of an impact using breakpoints has on the instrumented application. We can't know this simply from benchmarks, as each customer application is unique. So getting some real world data is important.
Plugin Checklist
- [ ] Unit tests.
- [ ] TypeScript definitions.
- [ ] TypeScript tests.
- [ ] API documentation.
- [ ] CircleCI jobs/workflows.
- [ ] Plugin is exported.
Additional Notes
- #5156
👈 (View in Graphite) master
This stack of pull requests is managed by Graphite. Learn more about stacking.
Overall package size
Self size: 9.45 MB Deduped: 103.47 MB No deduping: 103.99 MB
Dependency sizes
| name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.5.1 | 29.73 MB | 29.73 MB | | @datadog/native-appsec | 8.5.2 | 19.33 MB | 19.34 MB | | @datadog/pprof | 5.8.0 | 12.55 MB | 12.92 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.4.0 | 2.77 MB | 5.42 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.13.1 | 117.64 kB | 839.26 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.0 | 29.34 kB | 29.34 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.8 | 25.08 kB | 25.08 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.3 | 4.47 kB | 4.47 kB |🤖 This report was automatically generated by heaviest-objects-in-the-universe
Benchmarks
Benchmark execution time: 2025-05-27 12:25:06
Comparing candidate commit 87f0f807676aab5f07e1aaa404afdf7a70e4f1f6 in PR branch watson/DEBUG-2858/thread-paused-telemetry with baseline commit 5ba58ae92009571531b19231c71676a65de19639 in branch master.
Found 0 performance improvements and 0 performance regressions! Performance is the same for 1271 metrics, 52 unstable metrics.
We could improve the code a tad by reusing the start time as timeout later.
Do you mean timestamp instead of timeout?
@watson yes, just updated the typo
We could improve the code a tad by reusing the start time as timestamp later.
That sounds good. I'll do that in a separate PR as it's not really related to this one
@BridgeAR Oh hang on... hrtime has no basis in real time as it has an arbitrary start time, so it can't be used for timestamps.
Codecov Report
:white_check_mark: All modified and coverable lines are covered by tests.
:white_check_mark: Project coverage is 78.94%. Comparing base (5ba58ae) to head (87f0f80).
:warning: Report is 712 commits behind head on master.
Additional details and impacted files
@@ Coverage Diff @@
## master #5156 +/- ##
==========================================
- Coverage 79.35% 78.94% -0.42%
==========================================
Files 520 345 -175
Lines 23734 14347 -9387
==========================================
- Hits 18834 11326 -7508
+ Misses 4900 3021 -1879
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
:rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
- :package: JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.
Datadog Report
Branch report: watson/DEBUG-2858/thread-paused-telemetry
Commit report: 466f1c0
Test service: dd-trace-js-integration-tests
:white_check_mark: 0 Failed, 1146 Passed, 0 Skipped, 16m 42.42s Total Time
@watson PTAL
I am closing this for now to limit the surface of things we have to keep track of in the repo. Please reopen when getting back to it.