Skip to content

Conversation

khanayan123
Copy link
Collaborator

@khanayan123 khanayan123 commented Aug 19, 2025

What does this PR do?

Fix: Log injection no longer triggers sampling, preventing resource-based rules from being bypassed.

Changes:

  • Skip sampling for LOG format in inject() method
  • Add unit test confirming log injection doesn't trigger sampling
  • Integration test verifies resource-based rules work with log injection

Motivation

Since v5.57 a log injection bug was surfaced where default log injection caused sampling to run before web frameworks set resource names, bypassing resource-based rules. This issue has existed since v4.23.0 when we introduced resource based sampling

Copy link

github-actions bot commented Aug 19, 2025

Overall package size

Self size: 11.87 MB
Deduped: 111.49 MB
No deduping: 111.83 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.1 MB | | @opentelemetry/core | 1.30.1 | 908.66 kB | 7.16 MB | | protobufjs | 7.5.4 | 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 | | opentracing | 0.14.7 | 194.81 kB | 194.81 kB | | source-map | 0.7.6 | 185.63 kB | 185.63 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 19, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 83.72%. Comparing base (451946a) to head (8b53aea).
⚠️ Report is 2 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #6299   +/-   ##
=======================================
  Coverage   83.72%   83.72%           
=======================================
  Files         476      476           
  Lines       20001    20001           
=======================================
  Hits        16745    16745           
  Misses       3256     3256           

☔ 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.

@khanayan123 khanayan123 marked this pull request as ready for review August 19, 2025 00:53
@khanayan123 khanayan123 requested review from a team as code owners August 19, 2025 00:54
@pr-commenter
Copy link

pr-commenter bot commented Aug 19, 2025

Benchmarks

Benchmark execution time: 2025-08-20 14:07:15

Comparing candidate commit 8b53aea in PR branch khanayan123/fix-log-injection-sampling-bug with baseline commit 451946a 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.

Functionality wise this is LGTM, I believe the overall fix should be implemented somewhere else.

I think we could for example look into setting the resource.name earlier. If we manage that, the bug should also be fixed and it would likely also fix more situations (I could imagine this is also tricky in case other functionality relies on it as well).
This should for example not come with the performance overhead that this currently comes with.

@khanayan123 khanayan123 marked this pull request as draft August 19, 2025 16:28
@khanayan123 khanayan123 requested a review from BridgeAR August 19, 2025 18:44
@khanayan123 khanayan123 marked this pull request as ready for review August 19, 2025 18:45
Comment on lines 48 to 53
assert.isArray(payload)
assert.strictEqual(payload.length, 1)
// Bug: previously got USER_REJECT instead of USER_KEEP when log injection is enabled,
// meaning resource rules are not applied & instead global sampling is applied
// Now gets USER_KEEP because resource rules are applied
assert.propertyVal(payload[0][0].metrics, '_sampling_priority_v1', USER_KEEP)
Copy link
Collaborator

Choose a reason for hiding this comment

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

Nit: please change this to use our helper assertObjectContains for partial deep equal checks. That way there is additional debugging information in case of a failure and we don't add additional chai usage, which we want to prevent in the future (using Node.js assert instead).

The same applies to the other test.

…om:DataDog/dd-trace-js into khanayan123/fix-log-injection-sampling-bug
@khanayan123 khanayan123 requested a review from BridgeAR August 20, 2025 13:31
@khanayan123 khanayan123 enabled auto-merge (squash) August 20, 2025 13:33
Copy link

datadog-official bot commented Aug 20, 2025

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 8b53aea | Docs | Was this helpful? Give us feedback!

khanayan123 and others added 2 commits August 20, 2025 09:54
Co-authored-by: Ruben Bridgewater <ruben@bridgewater.de>
@khanayan123 khanayan123 requested a review from BridgeAR August 20, 2025 13:56
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.

LGTM

@khanayan123 khanayan123 merged commit f60b7f7 into master Aug 20, 2025
733 of 735 checks passed
@khanayan123 khanayan123 deleted the khanayan123/fix-log-injection-sampling-bug branch August 20, 2025 14:26
dd-octo-sts bot pushed a commit that referenced this pull request Aug 21, 2025
* fix log injection and sampling rule bug

* instead of deferring sampling decision seperate log injection from sampling

* revert

* address feedback
@dd-octo-sts dd-octo-sts bot mentioned this pull request Aug 21, 2025
tlhunter pushed a commit that referenced this pull request Aug 22, 2025
* fix log injection and sampling rule bug

* instead of deferring sampling decision seperate log injection from sampling

* revert

* address feedback
dd-octo-sts bot pushed a commit that referenced this pull request Aug 22, 2025
* fix log injection and sampling rule bug

* instead of deferring sampling decision seperate log injection from sampling

* revert

* address feedback
@dd-octo-sts dd-octo-sts bot mentioned this pull request Aug 22, 2025
BridgeAR pushed a commit that referenced this pull request Aug 26, 2025
* fix log injection and sampling rule bug

* instead of deferring sampling decision seperate log injection from sampling

* revert

* address feedback
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