Skip to content

Conversation

szegedi
Copy link
Contributor

@szegedi szegedi commented Aug 13, 2025

What does this PR do?

Binds profiler event specific data into context objects using a symbol instead of using a WeakMap.

Motivation

As discussed in #6267, the WeakMap solution strongly referenced the callback context object (the key in the map) from the value. Binding the data we need to track in a symbol property of the context object itself solves this problem.

As an additional bonus, since the context object is passed to the finish method we no longer need to keep track of it in start, reducing the data set to only the event start time. This way, we could eliminate the need for an intermediate object for storing the tuple of { startEvent, startTime }.

Additional info

I took the opportunity to also introduce private fields in the EventPlugin class – this is broken into its own commit for ease of review.

Copy link

github-actions bot commented Aug 13, 2025

Overall package size

Self size: 11.35 MB
Deduped: 111 MB
No deduping: 111.39 MB

Dependency sizes | name | version | self size | total size | |------|---------|-----------|------------| | @datadog/libdatadog | 0.7.0 | 35.02 MB | 35.02 MB | | @datadog/native-appsec | 10.1.0 | 20.37 MB | 20.37 MB | | @datadog/native-iast-taint-tracking | 4.0.0 | 11.72 MB | 11.73 MB | | @datadog/pprof | 5.9.0 | 9.77 MB | 10.14 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.3 | 2.95 MB | 5.6 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 | | jsonpath-plus | 10.3.0 | 617.18 kB | 1.08 MB | | import-in-the-middle | 1.14.2 | 122.36 kB | 850.93 kB | | lru-cache | 10.4.3 | 804.3 kB | 804.3 kB | | source-map | 0.7.4 | 226 kB | 226 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.1 | 109.9 kB | 109.9 kB | | lodash.sortby | 4.7.0 | 75.76 kB | 75.76 kB | | ignore | 7.0.5 | 63.38 kB | 63.38 kB | | istanbul-lib-coverage | 3.2.2 | 34.37 kB | 34.37 kB | | rfdc | 1.4.1 | 27.15 kB | 27.15 kB | | dc-polyfill | 0.1.10 | 26.73 kB | 26.73 kB | | @isaacs/ttlcache | 1.4.1 | 25.2 kB | 25.2 kB | | tlhunter-sorted-set | 0.1.0 | 24.94 kB | 24.94 kB | | shell-quote | 1.8.3 | 23.74 kB | 23.74 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.4 | 3.96 kB | 3.96 kB |

🤖 This report was automatically generated by heaviest-objects-in-the-universe

Copy link

codecov bot commented Aug 13, 2025

Codecov Report

❌ Patch coverage is 78.57143% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 82.95%. Comparing base (092a702) to head (a5bd5f9).

Files with missing lines Patch % Lines
...ace/src/profiling/profilers/event_plugins/event.js 78.57% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master    #6276      +/-   ##
==========================================
- Coverage   83.97%   82.95%   -1.02%     
==========================================
  Files         471      462       -9     
  Lines       19516    19571      +55     
==========================================
- Hits        16388    16235     -153     
- Misses       3128     3336     +208     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@szegedi szegedi force-pushed the szegedi/no-weakmap-in-events branch from 042b8bb to a5bd5f9 Compare August 13, 2025 11:57
@pr-commenter
Copy link

pr-commenter bot commented Aug 13, 2025

Benchmarks

Benchmark execution time: 2025-08-13 12:07:34

Comparing candidate commit a5bd5f9 in PR branch szegedi/no-weakmap-in-events with baseline commit 092a702 in branch master.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 1271 metrics, 52 unstable metrics.

Copy link
Collaborator

@BridgeAR BridgeAR left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice change! LGTM

@BridgeAR BridgeAR merged commit e6db2fe into master Aug 13, 2025
686 checks passed
@BridgeAR BridgeAR deleted the szegedi/no-weakmap-in-events branch August 13, 2025 14:36
dd-octo-sts bot pushed a commit that referenced this pull request Aug 13, 2025
…ntexts (#6276)

* Use symbol instead of weak map for associating data with contexts

* Use private fields in EventPlugin
@dd-octo-sts dd-octo-sts bot mentioned this pull request Aug 13, 2025
szegedi added a commit that referenced this pull request Aug 18, 2025
…ntexts (#6276)

* Use symbol instead of weak map for associating data with contexts

* Use private fields in EventPlugin
tlhunter pushed a commit that referenced this pull request Aug 22, 2025
…ntexts (#6276)

* Use symbol instead of weak map for associating data with contexts

* Use private fields in EventPlugin
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants