Skip to content

feat(obfuscation)!: feature parity on span obfuscation [APMSP-2671]#1788

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 29 commits into
mainfrom
oscarld/span-obfuscation-parity
Mar 27, 2026
Merged

feat(obfuscation)!: feature parity on span obfuscation [APMSP-2671]#1788
gh-worker-dd-mergequeue-cf854d[bot] merged 29 commits into
mainfrom
oscarld/span-obfuscation-parity

Conversation

@Eldolfin
Copy link
Copy Markdown
Contributor

@Eldolfin Eldolfin commented Mar 25, 2026

What does this PR do?

Integrate the work that has been done on specific string obfuscation (sql, redis, json, etc...) in obfuscate_span which is the high level function that can be used externally.

Motivation

Reach 100% parity between obfuscation libs.

Additional Notes

Anything else we should know when reviewing?

How to test the change?

  • Add tests from parity checker

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 25, 2026

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/oscarld/span-obfuscation-parity

Summary by Rule

Rule Base Branch PR Branch Change
unwrap_used 1 1 No change (0%)
Total 1 1 No change (0%)

Annotation Counts by File

File Base Branch PR Branch Change
libdd-trace-obfuscation/src/replacer.rs 1 1 No change (0%)

Annotation Stats by Crate

Crate Base Branch PR Branch Change
clippy-annotation-reporter 5 5 No change (0%)
datadog-ffe-ffi 1 1 No change (0%)
datadog-ipc 20 20 No change (0%)
datadog-live-debugger 6 6 No change (0%)
datadog-live-debugger-ffi 10 10 No change (0%)
datadog-profiling-replayer 4 4 No change (0%)
datadog-remote-config 3 3 No change (0%)
datadog-sidecar 55 55 No change (0%)
libdd-common 10 10 No change (0%)
libdd-common-ffi 12 12 No change (0%)
libdd-data-pipeline 5 5 No change (0%)
libdd-ddsketch 2 2 No change (0%)
libdd-dogstatsd-client 1 1 No change (0%)
libdd-profiling 13 13 No change (0%)
libdd-telemetry 19 19 No change (0%)
libdd-tinybytes 4 4 No change (0%)
libdd-trace-normalization 2 2 No change (0%)
libdd-trace-obfuscation 8 8 No change (0%)
libdd-trace-utils 15 15 No change (0%)
Total 195 195 No change (0%)

About This Report

This report tracks Clippy allow annotations for specific rules, showing how they've changed in this PR. Decreasing the number of these annotations generally improves code quality.

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Mar 25, 2026

Codecov Report

❌ Patch coverage is 89.41799% with 40 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.17%. Comparing base (a29b90b) to head (511e20d).

Additional details and impacted files
@@           Coverage Diff            @@
##             main    #1788    +/-   ##
========================================
  Coverage   71.16%   71.17%            
========================================
  Files         414      414            
  Lines       65739    65914   +175     
========================================
+ Hits        46786    46916   +130     
- Misses      18953    18998    +45     
Components Coverage Δ
libdd-crashtracker 65.31% <ø> (+0.04%) ⬆️
libdd-crashtracker-ffi 35.24% <ø> (ø)
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 87.27% <ø> (-0.29%) ⬇️
libdd-data-pipeline-ffi 74.17% <ø> (-1.60%) ⬇️
libdd-common 79.79% <ø> (ø)
libdd-common-ffi 73.87% <ø> (ø)
libdd-telemetry 62.48% <ø> (ø)
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 72.56% <ø> (ø)
libdd-profiling 81.62% <ø> (ø)
libdd-profiling-ffi 64.94% <ø> (ø)
datadog-sidecar 30.69% <ø> (-0.10%) ⬇️
datdog-sidecar-ffi 8.92% <ø> (-0.45%) ⬇️
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 87.24% <89.41%> (-0.13%) ⬇️
libdd-trace-protobuf 68.25% <ø> (ø)
libdd-trace-utils 88.64% <ø> (ø)
datadog-tracer-flare 86.88% <ø> (ø)
libdd-log 74.69% <ø> (ø)
🚀 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.

@datadog-datadog-prod-us1-2
Copy link
Copy Markdown

datadog-datadog-prod-us1-2 Bot commented Mar 25, 2026

⚠️ Tests

Fix all issues with BitsAI or with Cursor

⚠️ Warnings

❄️ 1 New flaky test detected

test_obfuscate_span from libdd-trace-obfuscation::test_span_obfuscation   View in Datadog   (Fix with Cursor)
Test has failed

ℹ️ Info

No other issues found (see more)

🧪 All tests passed

🎯 Code Coverage (details)
Patch Coverage: 89.42%
Overall Coverage: 71.18% (+0.01%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 511e20d | Docs | Datadog PR Page | Was this helpful? React with 👍/👎 or give us feedback!

@pr-commenter
Copy link
Copy Markdown

pr-commenter Bot commented Mar 25, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-03-27 15:36:36

Comparing candidate commit 511e20d in PR branch oscarld/span-obfuscation-parity with baseline commit a29b90b in branch main.

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

Explanation

This is an A/B test comparing a candidate commit's performance against that of a baseline commit. Performance changes are noted in the tables below as:

  • 🟩 = significantly better candidate vs. baseline
  • 🟥 = significantly worse candidate vs. baseline

We compute a confidence interval (CI) over the relative difference of means between metrics from the candidate and baseline commits, considering the baseline as the reference.

If the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD), the change is considered significant.

Feel free to reach out to #apm-benchmarking-platform on Slack if you have any questions.

More details about the CI and significant changes

You can imagine this CI as a range of values that is likely to contain the true difference of means between the candidate and baseline commits.

CIs of the difference of means are often centered around 0%, because often changes are not that big:

---------------------------------(------|---^--------)-------------------------------->
                              -0.6%    0%  0.3%     +1.2%
                                 |          |        |
         lower bound of the CI --'          |        |
sample mean (center of the CI) -------------'        |
         upper bound of the CI ----------------------'

As described above, a change is considered significant if the CI is entirely outside the configured SIGNIFICANT_IMPACT_THRESHOLD (or the deprecated UNCONFIDENCE_THRESHOLD).

For instance, for an execution time metric, this confidence interval indicates a significantly worse performance:

----------------------------------------|---------|---(---------^---------)---------->
                                       0%        1%  1.3%      2.2%      3.1%
                                                  |   |         |         |
       significant impact threshold --------------'   |         |         |
                      lower bound of CI --------------'         |         |
       sample mean (center of the CI) --------------------------'         |
                      upper bound of CI ----------------------------------'

scenario:two way interface

  • 🟩 execution_time [-836.463ns; -723.736ns] or [-5.716%; -4.946%]

Candidate

Candidate benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time 185.663µs 186.103µs ± 0.342µs 186.047µs ± 0.156µs 186.209µs 186.524µs 187.831µs 188.344µs 1.23% 3.403 16.722 0.18% 0.024µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5309438.735op/s 5373383.739op/s ± 9806.138op/s 5374993.113op/s ± 4507.639op/s 5379394.217op/s 5382688.170op/s 5384319.867op/s 5386098.426op/s 0.21% -3.364 16.410 0.18% 693.399op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.824µs 17.879µs ± 0.028µs 17.876µs ± 0.010µs 17.885µs 17.921µs 17.942µs 18.138µs 1.46% 4.011 32.943 0.16% 0.002µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 55134377.304op/s 55932976.039op/s ± 88495.273op/s 55940900.085op/s ± 31026.800op/s 55975153.621op/s 56031194.260op/s 56094448.798op/s 56102912.543op/s 0.29% -3.922 31.891 0.16% 6257.561op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.515µs 10.571µs ± 0.046µs 10.545µs ± 0.014µs 10.596µs 10.666µs 10.707µs 10.711µs 1.58% 1.175 0.357 0.44% 0.003µs 1 200
normalization/normalize_name/normalize_name/good throughput 93358504.497op/s 94602963.172op/s ± 413023.014op/s 94831330.544op/s ± 125862.614op/s 94902950.867op/s 94968444.922op/s 95031023.678op/s 95104237.148op/s 0.29% -1.162 0.315 0.44% 29205.137op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... execution_time [186.056µs; 186.150µs] or [-0.025%; +0.025%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5372024.702op/s; 5374742.775op/s] or [-0.025%; +0.025%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.875µs; 17.883µs] or [-0.022%; +0.022%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55920711.445op/s; 55945240.633op/s] or [-0.022%; +0.022%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.564µs; 10.577µs] or [-0.061%; +0.061%] None None None
normalization/normalize_name/normalize_name/good throughput [94545722.155op/s; 94660204.190op/s] or [-0.061%; +0.061%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching serializing traces from their internal representation to msgpack execution_time 14.219ms 14.269ms ± 0.031ms 14.264ms ± 0.012ms 14.275ms 14.326ms 14.391ms 14.454ms 1.33% 2.592 9.556 0.22% 0.002ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching serializing traces from their internal representation to msgpack execution_time [14.264ms; 14.273ms] or [-0.030%; +0.030%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
credit_card/is_card_number/ execution_time 3.891µs 3.912µs ± 0.003µs 3.912µs ± 0.001µs 3.914µs 3.916µs 3.919µs 3.921µs 0.22% -2.222 21.659 0.07% 0.000µs 1 200
credit_card/is_card_number/ throughput 255052835.153op/s 255601138.631op/s ± 174626.721op/s 255602722.171op/s ± 91544.973op/s 255698437.506op/s 255796138.093op/s 255862666.056op/s 257035957.078op/s 0.56% 2.260 22.002 0.07% 12347.974op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 78.952µs 79.671µs ± 0.315µs 79.628µs ± 0.198µs 79.833µs 80.251µs 80.715µs 80.880µs 1.57% 1.069 1.590 0.39% 0.022µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12363974.205op/s 12551878.473op/s ± 49439.495op/s 12558370.258op/s ± 31252.747op/s 12589311.675op/s 12616146.021op/s 12624455.960op/s 12665895.588op/s 0.86% -1.040 1.502 0.39% 3495.900op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 72.359µs 72.897µs ± 0.308µs 72.845µs ± 0.196µs 73.069µs 73.446µs 73.820µs 74.079µs 1.69% 0.999 1.062 0.42% 0.022µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 13499021.761op/s 13718314.167op/s ± 57742.301op/s 13727782.949op/s ± 36970.302op/s 13761988.701op/s 13788770.632op/s 13809086.343op/s 13819975.392op/s 0.67% -0.973 0.982 0.42% 4082.997op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.893µs 3.912µs ± 0.003µs 3.912µs ± 0.001µs 3.914µs 3.917µs 3.920µs 3.925µs 0.32% -0.652 11.455 0.07% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254800528.654op/s 255598718.014op/s ± 187539.671op/s 255609999.747op/s ± 92600.768op/s 255701681.241op/s 255808130.187op/s 255945611.852op/s 256872958.993op/s 0.49% 0.681 11.605 0.07% 13261.057op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 69.147µs 69.483µs ± 0.234µs 69.416µs ± 0.115µs 69.595µs 69.946µs 70.196µs 70.478µs 1.53% 1.344 1.800 0.34% 0.017µs 1 200
credit_card/is_card_number/378282246310005 throughput 14188848.649op/s 14392089.590op/s ± 48335.416op/s 14405907.146op/s ± 23821.252op/s 14424156.857op/s 14446591.269op/s 14456303.199op/s 14461870.776op/s 0.39% -1.324 1.720 0.34% 3417.830op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 52.265µs 52.330µs ± 0.029µs 52.327µs ± 0.020µs 52.348µs 52.380µs 52.406µs 52.448µs 0.23% 0.626 0.956 0.06% 0.002µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 19066556.981op/s 19109645.535op/s ± 10570.264op/s 19110616.779op/s ± 7173.855op/s 19117308.084op/s 19125449.477op/s 19130835.201op/s 19133083.952op/s 0.12% -0.621 0.945 0.06% 747.431op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 5.705µs 5.831µs ± 0.060µs 5.830µs ± 0.042µs 5.874µs 5.932µs 5.969µs 6.013µs 3.14% 0.257 -0.431 1.02% 0.004µs 1 200
credit_card/is_card_number/x371413321323331 throughput 166301409.064op/s 171525969.794op/s ± 1754932.538op/s 171524137.869op/s ± 1237925.389op/s 172746029.543op/s 174341924.791op/s 175010837.134op/s 175285591.627op/s 2.19% -0.212 -0.477 1.02% 124092.470op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.893µs 3.912µs ± 0.003µs 3.912µs ± 0.001µs 3.913µs 3.916µs 3.918µs 3.929µs 0.44% -1.073 17.546 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 254523974.446op/s 255625135.050op/s ± 190013.567op/s 255633053.356op/s ± 81992.032op/s 255715212.490op/s 255801243.964op/s 255919891.317op/s 256854012.661op/s 0.48% 1.114 17.634 0.07% 13435.988op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 63.991µs 64.466µs ± 0.182µs 64.458µs ± 0.122µs 64.578µs 64.795µs 64.884µs 64.980µs 0.81% 0.218 0.034 0.28% 0.013µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15389268.589op/s 15512247.627op/s ± 43877.331op/s 15514089.951op/s ± 29398.592op/s 15543359.999op/s 15573853.849op/s 15613512.558op/s 15627285.240op/s 0.73% -0.202 0.029 0.28% 3102.596op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 57.945µs 58.137µs ± 0.146µs 58.087µs ± 0.066µs 58.233µs 58.429µs 58.566µs 58.593µs 0.87% 1.242 0.815 0.25% 0.010µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 17067001.298op/s 17200760.696op/s ± 42930.715op/s 17215688.747op/s ± 19623.679op/s 17231693.567op/s 17244935.800op/s 17248433.858op/s 17257861.480op/s 0.24% -1.232 0.784 0.25% 3035.660op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.892µs 3.912µs ± 0.003µs 3.911µs ± 0.001µs 3.913µs 3.915µs 3.918µs 3.929µs 0.45% 0.634 21.037 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 254518702.347op/s 255653524.299op/s ± 184360.258op/s 255662021.407op/s ± 79627.050op/s 255742434.064op/s 255843951.882op/s 255906804.212op/s 256913608.504op/s 0.49% -0.585 21.078 0.07% 13036.239op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 54.467µs 54.857µs ± 0.216µs 54.787µs ± 0.114µs 54.974µs 55.242µs 55.615µs 55.901µs 2.03% 1.337 2.808 0.39% 0.015µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 17888827.098op/s 18229356.551op/s ± 71292.120op/s 18252635.325op/s ± 37886.535op/s 18280276.964op/s 18305133.715op/s 18346436.574op/s 18359790.494op/s 0.59% -1.302 2.632 0.39% 5041.114op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 52.259µs 52.339µs ± 0.028µs 52.339µs ± 0.019µs 52.357µs 52.386µs 52.410µs 52.412µs 0.14% 0.025 0.022 0.05% 0.002µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 19079692.996op/s 19106247.559op/s ± 10241.112op/s 19106095.452op/s ± 6792.706op/s 19113083.730op/s 19122807.731op/s 19129843.061op/s 19135604.863op/s 0.15% -0.022 0.022 0.05% 724.156op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 5.703µs 5.842µs ± 0.058µs 5.837µs ± 0.043µs 5.883µs 5.934µs 5.966µs 5.993µs 2.67% 0.013 -0.650 0.99% 0.004µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 166870354.294op/s 171196026.857op/s ± 1704917.019op/s 171329335.299op/s ± 1256344.991op/s 172457809.113op/s 173910781.725op/s 174357607.752op/s 175335438.995op/s 2.34% 0.027 -0.656 0.99% 120555.839op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
credit_card/is_card_number/ execution_time [3.912µs; 3.913µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/ throughput [255576937.047op/s; 255625340.215op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [79.627µs; 79.714µs] or [-0.055%; +0.055%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12545026.635op/s; 12558730.312op/s] or [-0.055%; +0.055%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [72.854µs; 72.939µs] or [-0.059%; +0.059%] None None None
credit_card/is_card_number/ 378282246310005 throughput [13710311.639op/s; 13726316.695op/s] or [-0.058%; +0.058%] None None None
credit_card/is_card_number/37828224631 execution_time [3.912µs; 3.913µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/37828224631 throughput [255572726.820op/s; 255624709.209op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/378282246310005 execution_time [69.451µs; 69.516µs] or [-0.047%; +0.047%] None None None
credit_card/is_card_number/378282246310005 throughput [14385390.766op/s; 14398788.414op/s] or [-0.047%; +0.047%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [52.326µs; 52.334µs] or [-0.008%; +0.008%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [19108180.598op/s; 19111110.472op/s] or [-0.008%; +0.008%] None None None
credit_card/is_card_number/x371413321323331 execution_time [5.822µs; 5.839µs] or [-0.142%; +0.142%] None None None
credit_card/is_card_number/x371413321323331 throughput [171282753.023op/s; 171769186.566op/s] or [-0.142%; +0.142%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.912µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ throughput [255598800.997op/s; 255651469.103op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [64.440µs; 64.491µs] or [-0.039%; +0.039%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15506166.651op/s; 15518328.603op/s] or [-0.039%; +0.039%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [58.117µs; 58.157µs] or [-0.035%; +0.035%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [17194810.912op/s; 17206710.481op/s] or [-0.035%; +0.035%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.911µs; 3.912µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255627973.740op/s; 255679074.857op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [54.828µs; 54.887µs] or [-0.054%; +0.054%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [18219476.149op/s; 18239236.953op/s] or [-0.054%; +0.054%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [52.335µs; 52.343µs] or [-0.007%; +0.007%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [19104828.239op/s; 19107666.879op/s] or [-0.007%; +0.007%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [5.834µs; 5.850µs] or [-0.138%; +0.138%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [170959741.755op/s; 171432311.959op/s] or [-0.138%; +0.138%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
redis/obfuscate_redis_string execution_time 33.454µs 33.940µs ± 0.836µs 33.549µs ± 0.059µs 33.675µs 35.681µs 35.754µs 37.515µs 11.82% 1.802 1.827 2.46% 0.059µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
redis/obfuscate_redis_string execution_time [33.824µs; 34.056µs] or [-0.341%; +0.341%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample_frames_x1000 execution_time 4.192ms 4.196ms ± 0.003ms 4.196ms ± 0.001ms 4.197ms 4.200ms 4.208ms 4.215ms 0.46% 2.745 12.191 0.07% 0.000ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample_frames_x1000 execution_time [4.196ms; 4.197ms] or [-0.010%; +0.010%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
concentrator/add_spans_to_concentrator execution_time 14.778ms 14.812ms ± 0.016ms 14.810ms ± 0.010ms 14.821ms 14.839ms 14.857ms 14.869ms 0.40% 0.761 0.731 0.11% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
concentrator/add_spans_to_concentrator execution_time [14.810ms; 14.814ms] or [-0.015%; +0.015%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time 495.336µs 496.288µs ± 0.766µs 496.097µs ± 0.286µs 496.414µs 497.849µs 499.183µs 501.535µs 1.10% 2.968 12.738 0.15% 0.054µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1993879.676op/s 2014963.580op/s ± 3097.914op/s 2015733.472op/s ± 1161.045op/s 2016703.854op/s 2017685.122op/s 2018289.158op/s 2018829.850op/s 0.15% -2.941 12.490 0.15% 219.056op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 370.547µs 371.295µs ± 0.335µs 371.312µs ± 0.201µs 371.488µs 371.828µs 372.162µs 372.726µs 0.38% 0.503 1.159 0.09% 0.024µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2682937.242op/s 2693276.992op/s ± 2431.319op/s 2693150.405op/s ± 1454.868op/s 2695111.104op/s 2696937.215op/s 2698211.342op/s 2698715.517op/s 0.21% -0.495 1.136 0.09% 171.920op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 167.805µs 168.193µs ± 0.228µs 168.139µs ± 0.107µs 168.250µs 168.690µs 168.861µs 168.967µs 0.49% 1.296 1.291 0.14% 0.016µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5918319.484op/s 5945575.743op/s ± 8041.616op/s 5947448.621op/s ± 3793.821op/s 5951113.334op/s 5954268.120op/s 5956876.211op/s 5959296.343op/s 0.20% -1.289 1.274 0.13% 568.628op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.814µs 37.001µs ± 0.109µs 37.016µs ± 0.095µs 37.097µs 37.148µs 37.187µs 37.209µs 0.52% -0.131 -1.312 0.29% 0.008µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26875438.939op/s 27026607.247op/s ± 79293.507op/s 27015511.467op/s ± 69583.876op/s 27102250.141op/s 27147017.592op/s 27155949.580op/s 27163835.338op/s 0.55% 0.137 -1.313 0.29% 5606.898op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 46.279µs 46.385µs ± 0.056µs 46.376µs ± 0.041µs 46.428µs 46.482µs 46.513µs 46.531µs 0.33% 0.376 -0.635 0.12% 0.004µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21490848.838op/s 21558617.789op/s ± 25895.719op/s 21562714.622op/s ± 18961.053op/s 21579449.028op/s 21594107.227op/s 21606722.923op/s 21608254.353op/s 0.21% -0.372 -0.639 0.12% 1831.104op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... execution_time [496.182µs; 496.394µs] or [-0.021%; +0.021%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2014534.239op/s; 2015392.921op/s] or [-0.021%; +0.021%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [371.249µs; 371.342µs] or [-0.013%; +0.013%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2692940.035op/s; 2693613.950op/s] or [-0.013%; +0.013%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [168.161µs; 168.224µs] or [-0.019%; +0.019%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5944461.253op/s; 5946690.234op/s] or [-0.019%; +0.019%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [36.986µs; 37.016µs] or [-0.041%; +0.041%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [27015617.929op/s; 27037596.564op/s] or [-0.041%; +0.041%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.378µs; 46.393µs] or [-0.017%; +0.017%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21555028.892op/s; 21562206.687op/s] or [-0.017%; +0.017%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
receiver_entry_point/report/2598 execution_time 3.382ms 3.407ms ± 0.019ms 3.402ms ± 0.008ms 3.413ms 3.448ms 3.471ms 3.482ms 2.35% 1.695 2.786 0.56% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
receiver_entry_point/report/2598 execution_time [3.404ms; 3.410ms] or [-0.077%; +0.077%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
two way interface execution_time 13.615µs 13.854µs ± 0.139µs 13.827µs ± 0.106µs 13.961µs 14.099µs 14.187µs 14.373µs 3.95% 0.633 0.185 1.00% 0.010µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [13.834µs; 13.873µs] or [-0.139%; +0.139%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching string interning on wordpress profile execution_time 160.980µs 161.721µs ± 0.254µs 161.696µs ± 0.133µs 161.846µs 162.184µs 162.582µs 162.658µs 0.59% 0.755 2.006 0.16% 0.018µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching string interning on wordpress profile execution_time [161.686µs; 161.756µs] or [-0.022%; +0.022%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
ip_address/quantize_peer_ip_address_benchmark execution_time 4.980µs 5.047µs ± 0.041µs 5.052µs ± 0.032µs 5.077µs 5.111µs 5.115µs 5.129µs 1.52% 0.019 -1.293 0.80% 0.003µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
ip_address/quantize_peer_ip_address_benchmark execution_time [5.041µs; 5.052µs] or [-0.112%; +0.112%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
normalization/normalize_trace/test_trace execution_time 244.083ns 255.282ns ± 12.183ns 250.164ns ± 3.691ns 256.542ns 286.227ns 289.768ns 294.001ns 17.52% 1.634 1.567 4.76% 0.861ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
normalization/normalize_trace/test_trace execution_time [253.594ns; 256.971ns] or [-0.661%; +0.661%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_serialize_compressed_pprof_timestamped_x1000 execution_time 925.605µs 929.242µs ± 1.437µs 929.212µs ± 0.812µs 929.998µs 931.915µs 932.705µs 934.110µs 0.53% 0.320 0.495 0.15% 0.102µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_serialize_compressed_pprof_timestamped_x1000 execution_time [929.043µs; 929.441µs] or [-0.021%; +0.021%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
benching deserializing traces from msgpack to their internal representation execution_time 49.214ms 49.672ms ± 0.816ms 49.552ms ± 0.087ms 49.636ms 49.820ms 55.331ms 56.757ms 14.54% 7.168 53.442 1.64% 0.058ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
benching deserializing traces from msgpack to their internal representation execution_time [49.559ms; 49.785ms] or [-0.228%; +0.228%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
tags/replace_trace_tags execution_time 2.388µs 2.436µs ± 0.016µs 2.436µs ± 0.007µs 2.442µs 2.467µs 2.475µs 2.484µs 1.98% 0.150 1.442 0.65% 0.001µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
tags/replace_trace_tags execution_time [2.434µs; 2.438µs] or [-0.090%; +0.090%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
single_flag_killswitch/rules-based execution_time 189.857ns 192.347ns ± 1.980ns 192.171ns ± 1.423ns 193.268ns 196.354ns 198.681ns 199.707ns 3.92% 1.020 1.118 1.03% 0.140ns 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
single_flag_killswitch/rules-based execution_time [192.072ns; 192.621ns] or [-0.143%; +0.143%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sdk_test_data/rules-based execution_time 144.472µs 146.569µs ± 1.871µs 146.267µs ± 0.661µs 146.987µs 148.768µs 151.915µs 165.034µs 12.83% 5.824 49.510 1.27% 0.132µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sdk_test_data/rules-based execution_time [146.310µs; 146.829µs] or [-0.177%; +0.177%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
sql/obfuscate_sql_string execution_time 288.496µs 289.084µs ± 0.704µs 288.994µs ± 0.156µs 289.151µs 289.499µs 291.007µs 297.838µs 3.06% 9.978 118.872 0.24% 0.050µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
sql/obfuscate_sql_string execution_time [288.987µs; 289.182µs] or [-0.034%; +0.034%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample2_frames_x1000 execution_time 726.904µs 728.000µs ± 0.473µs 727.947µs ± 0.309µs 728.299µs 728.804µs 729.284µs 729.487µs 0.21% 0.529 0.166 0.06% 0.033µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample2_frames_x1000 execution_time [727.935µs; 728.066µs] or [-0.009%; +0.009%] None None None

Group 20

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
profile_add_sample_timestamped_x1000 execution_time 4.180ms 4.185ms ± 0.008ms 4.183ms ± 0.001ms 4.185ms 4.188ms 4.211ms 4.281ms 2.32% 8.737 93.655 0.20% 0.001ms 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
profile_add_sample_timestamped_x1000 execution_time [4.184ms; 4.186ms] or [-0.027%; +0.027%] None None None

Group 21

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 511e20d 1774624728 oscarld/span-obfuscation-parity
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
write only interface execution_time 5.300µs 5.365µs ± 0.029µs 5.360µs ± 0.013µs 5.377µs 5.425µs 5.448µs 5.517µs 2.94% 1.487 4.404 0.54% 0.002µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [5.361µs; 5.369µs] or [-0.075%; +0.075%] None None None

Baseline

Omitted due to size.

@dd-octo-sts
Copy link
Copy Markdown
Contributor

dd-octo-sts Bot commented Mar 25, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 101.90 MB 101.90 MB 0% (0 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.76 MB 8.76 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.36 MB 11.36 MB 0% (0 B) 👌
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 118.84 MB 118.84 MB 0% (0 B) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 27.39 MB 27.39 MB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 80.69 KB 80.69 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 187.21 MB 187.19 MB --.01% (-24.00 KB) 💪
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 924.91 MB 924.91 MB +0% (+516 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 9.06 MB 9.06 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 80.69 KB 80.69 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 26.98 MB 26.98 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 61.28 MB 61.28 MB 0% (0 B) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 23.20 MB 23.20 MB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 81.94 KB 81.94 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 191.48 MB 191.46 MB -0% (-16.00 KB) 👌
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 908.20 MB 908.20 MB +0% (+516 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 6.90 MB 6.90 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 81.94 KB 81.94 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 29.11 MB 29.11 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 57.68 MB 57.68 MB 0% (0 B) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 88.72 MB 88.72 MB 0% (0 B) 👌
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 10.32 MB 10.32 MB 0% (0 B) 👌
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 111.54 MB 111.54 MB 0% (0 B) 👌
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 12.07 MB 12.07 MB 0% (0 B) 👌

@Eldolfin
Copy link
Copy Markdown
Contributor Author

@codex review

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR expands the Rust span obfuscation layer to reach closer parity with other obfuscation libraries by applying protocol-specific obfuscation (SQL/Redis/JSON/etc.) at the obfuscate_span level, and adds optional fuzzing support for protobuf message types.

Changes:

  • Add fuzzing feature support in libdd-trace-protobuf by conditionally deriving bolero::TypeGenerator on key protobuf types.
  • Extend ObfuscationConfig and obfuscate_span to support additional span types and tag-based obfuscation (SQL/Cassandra, Valkey, JSON bodies, credit-card detection, span events).
  • Refactor SQL and JSON obfuscation APIs/config to carry more structured configuration (notably DBMS selection for SQL).

Reviewed changes

Copilot reviewed 9 out of 10 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
libdd-trace-protobuf/src/pb.rs Adds conditional bolero::TypeGenerator derives under fuzzing feature.
libdd-trace-protobuf/src/pb.idx.rs Adds conditional bolero::TypeGenerator derives under fuzzing feature for idx types.
libdd-trace-protobuf/build.rs Updates prost-build generation attributes to include fuzzing derives for selected types.
libdd-trace-protobuf/Cargo.toml Adds optional bolero dependency and fuzzing feature.
libdd-trace-obfuscation/src/sql.rs Refactors SQL obfuscation to accept an explicit DbmsKind parameter and passes DBMS through tokenizer.
libdd-trace-obfuscation/src/obfuscation_config.rs Introduces structured sub-configs (redis/valkey/memcached/sql/json/credit-card) and defaults.
libdd-trace-obfuscation/src/obfuscate.rs Adds span-type specific obfuscation paths (redis/valkey/sql/json) and span-event CC obfuscation.
libdd-trace-obfuscation/src/json.rs Refactors JSON obfuscator to accept a config struct and transformer function pointer.
Cargo.lock Updates bolero-related crates and records new dependency resolution.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread libdd-trace-obfuscation/src/sql.rs
Comment thread libdd-trace-obfuscation/src/obfuscate.rs
Comment thread libdd-trace-obfuscation/src/obfuscate.rs
Comment thread libdd-trace-obfuscation/src/obfuscate.rs Outdated
Comment thread libdd-trace-obfuscation/src/obfuscate.rs Outdated
Comment thread libdd-trace-obfuscation/src/obfuscation_config.rs Outdated
Comment thread libdd-trace-obfuscation/src/obfuscation_config.rs
Comment thread libdd-trace-obfuscation/src/json.rs
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: c397b05830

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread libdd-trace-obfuscation/src/obfuscate.rs
@Eldolfin Eldolfin changed the title feat(obfuscation): feature parity on span obfuscation [APMSP-2671] feat!(obfuscation): feature parity on span obfuscation [APMSP-2671] Mar 25, 2026
@Eldolfin Eldolfin changed the title feat!(obfuscation): feature parity on span obfuscation [APMSP-2671] feat(obfuscation)!: feature parity on span obfuscation [APMSP-2671] Mar 25, 2026
@Eldolfin Eldolfin marked this pull request as ready for review March 26, 2026 14:06
@Eldolfin Eldolfin requested review from a team as code owners March 26, 2026 14:07
Comment thread libdd-trace-obfuscation/src/obfuscate.rs Outdated
const TAG_CARD_NUMBER: &str = "card.number";

/// `obfuscate_span` goes through `span` fields and applies obfuscation on it
// TODO: return parsing errors in a vec
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Are you planning to resolve this TODO in a futur PR ? If so you might wanna create a Jira ticket and add the ticket number here

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

The thing is that I'm not sure what to do with these errors. I should probably log them somewhere but I have not though of it yet and accumulating the errors might add a large overhead in some cases.

Comment thread libdd-trace-obfuscation/src/obfuscate.rs Outdated
Comment thread libdd-trace-obfuscation/src/obfuscate.rs Outdated
Eldolfin and others added 2 commits March 27, 2026 14:46
Co-authored-by: Scarlett <77939650+anais-raison@users.noreply.github.com>
Co-authored-by: Oscar Le Dauphin <90446228+Eldolfin@users.noreply.github.com>
@gh-worker-dd-mergequeue-cf854d gh-worker-dd-mergequeue-cf854d Bot merged commit 102231d into main Mar 27, 2026
116 of 119 checks passed
@gh-worker-dd-mergequeue-cf854d gh-worker-dd-mergequeue-cf854d Bot deleted the oscarld/span-obfuscation-parity branch March 27, 2026 17:20
iunanua added a commit that referenced this pull request May 18, 2026
# Release proposal for libdd-sampling and its dependencies

This PR contains version bumps based on public API changes and commits
since last release.

## libdd-tinybytes
**Next version:** `1.1.1`
**Semver bump:** `patch`
**Tag:** `libdd-tinybytes-v1.1.1`

### Commits

- perf: pre-compute string messagepack encoding (#1948)

## libdd-trace-protobuf
**Next version:** `3.0.2`
**Semver bump:** `patch`
**Tag:** `libdd-trace-protobuf-v3.0.2`

### Commits

- feat(obfuscation)!: feature parity on span obfuscation [APMSP-2671]
(#1788)

## libdd-trace-utils
**Next version:** `4.0.0`
**Semver bump:** `major`
**Tag:** `libdd-trace-utils-v4.0.0`

### ⚠️ major bump forced due to:

- `libdd-common`: ^3.0.2 → ^4.1.0

### Commits

- feat(trace-utils)!: search all spans to populate tracer payload fields
(#1954)
- perf: pre-compute string messagepack encoding (#1948)
- feat(capablities)!: sleep & spawn capabilities (#1873)
- feat(libdd-trace-utils): check for empty value in header
datadog-client-computed-stats (#1900)
- chore(benchmarks): add allocation size tracking allocator (#1905)
- fix(crypto): gate libdd-common TLS features in obfuscation and
capabilities-impl (#1872)
- fix(libdd-traceutils): Update cloud environment detection logic for
Serverless [SVLS-8799] (#1857)
- fix(spawn_worker): defer trampoline self-deletion to avoid Valgrind
false positive (#1844)
- feat(runtime)!: add shared runtime (#1602)
- ci: compilation of libdd-data-pipeline to wasm32 (#1830)
- feat(capabilities)!: trait architecture http (#1555)
- feat(trace-export): map DD span resource to OTLP resource.name
attribute (#1811)
- feat(otel): add support for OTLP trace export (#1641)

## libdd-sampling
**Next version:** `1.0.0`
**Semver bump:** `major`
**Tag:** `libdd-sampling-v1.0.0`

**Warning:** this is an initial release. Please verify that the version
and commits included are correct.


[APMSP-2671]:
https://datadoghq.atlassian.net/browse/APMSP-2671?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ
[SVLS-8799]:
https://datadoghq.atlassian.net/browse/SVLS-8799?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: iunanua <18325288+iunanua@users.noreply.github.com>
iunanua added a commit that referenced this pull request May 18, 2026
# Release proposal for libdd-data-pipeline and its dependencies

This PR contains version bumps based on public API changes and commits
since last release.

## libdd-dogstatsd-client
**Next version:** `3.0.0`
**Semver bump:** `major`
**Tag:** `libdd-dogstatsd-client-v3.0.0`

### ⚠️ major bump forced due to:

- `libdd-common`: ^3.0.2 → ^4.1.0

### Commits

- fix(crypto): gate libdd-common TLS features in remaining internal
crates + add CI guard (#1943)

## libdd-trace-obfuscation
**Next version:** `3.0.0`
**Semver bump:** `major`
**Tag:** `libdd-trace-obfuscation-v3.0.0`

### ⚠️ major bump forced due to:

- `libdd-common`: ^3.0.2 → ^4.1.0
- `libdd-trace-utils`: ^3.0.1 → ^4.0.0

### Commits

- feat!: integrate obfuscation to the stats exporter [APMSP-2764]
(#1819)
- feat!: added regex-lite feature (#1939)
- chore: clippy (#1889)
- fix(crypto): gate libdd-common TLS features in obfuscation and
capabilities-impl (#1872)
- feat(obfuscation)!: feature parity on span obfuscation [APMSP-2671]
(#1788)
- feat(obfuscation/sql): feature parity on sql obfuscation [APMSP-2667]
(#1708)

## libdd-trace-stats
**Next version:** `3.0.0`
**Semver bump:** `major`
**Tag:** `libdd-trace-stats-v3.0.0`

### ⚠️ major bump forced due to:

- `libdd-trace-utils`: ^3.0.1 → ^4.0.0

### Commits

- perf: pre-compute string messagepack encoding (#1948)
- feat!: integrate obfuscation to the stats exporter [APMSP-2764]
(#1819)
- feat(capablities)!: sleep & spawn capabilities (#1873)
- feat: use ip quantization when aggregating peer tags for trace stats
(#1944)
- fix(crypto): gate libdd-common TLS features in remaining internal
crates + add CI guard (#1943)
- feat(shared_runtime)!: allow worker to be stopped after fork (#1893)
- feat(sidecar)!: Add stats computation via SHM (#1821)
- feat(stats): propagate service source from span meta to client stats
payload (#1803)
- fix(stats): align with css spec (#1790)

## libdd-data-pipeline
**Next version:** `4.0.0`
**Semver bump:** `major`
**Tag:** `libdd-data-pipeline-v4.0.0`

### ⚠️ major bump forced due to:

- `libdd-common`: ^3.0.2 → ^4.1.0
- `libdd-telemetry`: ^4.0.0 → ^5.0.0
- `libdd-trace-utils`: ^3.0.1 → ^4.0.0

### Commits

- fix(libdd-telemetry): restore previous Cargo.toml version (#1993)
- fix(data-pipeline): remove default-features from of trace-obfuscation
(#1981)
- fix(trace_exporter: shared_runtime): unwrap_or being eager is not good
(#1983)
- perf: pre-compute string messagepack encoding (#1948)
- feat!: integrate obfuscation to the stats exporter [APMSP-2764]
(#1819)
- feat(capablities)!: sleep & spawn capabilities (#1873)
- fix(telemetry): avoid trigger loop in telemetry worker (#1950)
- feat(telemetry)!: include dependencies and integrations in
app-extended-heartbeat (#1962)
- perf(trace-serializer): pre-allocate serialization buffer (#1949)
- feat!: added regex-lite feature (#1939)
- fix(crypto): gate libdd-common TLS features in remaining internal
crates + add CI guard (#1943)
- feat(telemetry): add session id support to trace export (#1822)
- fix(path): missing bench path in data-pipeline (#1907)
- feat(data-pipeline): port dd-trace-rs trace buffer implementation
(#1826)
- feat(info_fetcher): add timeout to info fetcher (#1890)
- feat(shared_runtime)!: allow worker to be stopped after fork (#1893)
- feat(sidecar)!: Add stats computation via SHM (#1821)
- ci(libdd-shared-runtime): downgrade version so publish workflow
succeeds (#1870)
- feat(runtime)!: add shared runtime (#1602)
- ci: compilation of libdd-data-pipeline to wasm32 (#1830)
- feat(capabilities)!: trait architecture http (#1555)
- feat(otel): add support for OTLP trace export (#1641)
- fix(stats): align with css spec (#1790)

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: iunanua <18325288+iunanua@users.noreply.github.com>
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.

4 participants