[DI] Support multiple probes in the same location#5535
Conversation
This stack of pull requests is managed by Graphite. Learn more about stacking. |
Overall package sizeSelf size: 9.27 MB Dependency sizes| name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.5.0 | 29.83 MB | 29.83 MB | | @datadog/native-appsec | 8.5.1 | 19.26 MB | 19.27 MB | | @datadog/native-iast-taint-tracking | 3.3.0 | 13.77 MB | 13.78 MB | | @datadog/pprof | 5.7.0 | 9.89 MB | 10.26 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 | 3.1.0 | 2.37 MB | 2.52 MB | | @datadog/native-metrics | 3.1.0 | 1.06 MB | 1.46 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 | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | dc-polyfill | 0.1.6 | 24.56 kB | 24.56 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 | | 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 |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #5535 +/- ##
==========================================
- Coverage 79.41% 79.26% -0.15%
==========================================
Files 516 512 -4
Lines 23366 23195 -171
==========================================
- Hits 18556 18386 -170
+ Misses 4810 4809 -1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
BenchmarksBenchmark execution time: 2025-04-08 11:41:23 Comparing candidate commit 4d66ab4 in PR branch Found 0 performance improvements and 0 performance regressions! Performance is the same for 945 metrics, 18 unstable metrics. |
Datadog ReportBranch report: ✅ 0 Failed, 930 Passed, 0 Skipped, 10m 3.58s Total Time |
da238d8 to
862d5ac
Compare
862d5ac to
91ff5a2
Compare
d62aec9 to
2b9afe2
Compare
| module.exports = () => async function lock () { | ||
| if (lock.p) await lock.p | ||
| let resolve | ||
| lock.p = new Promise((_resolve) => { resolve = _resolve }).then(() => { lock.p = null }) |
There was a problem hiding this comment.
So sad we can't use Promise.withResolvers yet.
Co-authored-by: Attila Szegedi <szegedi@users.noreply.github.com>

What does this PR do?
Allow the user to set multiple probes on the same location (file/line/column).
The Chrome DevTools Protocol API that we use (
Debugger.setBreakpoint) does not allow more than one breakpoint per location. To get around this, we keep a reference to which probes should be at each physical breakpoint and "execute" those when the shared breakpoint is hit.Motivation
Align on feature parity with the other tracers
Plugin Checklist
Additional Notes