Skip to content

refactor(libdd-data-pipeline): feature gate telemetry#1778

Open
hoolioh wants to merge 13 commits intomainfrom
julio/opt-in-telemetry
Open

refactor(libdd-data-pipeline): feature gate telemetry#1778
hoolioh wants to merge 13 commits intomainfrom
julio/opt-in-telemetry

Conversation

@hoolioh
Copy link
Copy Markdown
Contributor

@hoolioh hoolioh commented Mar 23, 2026

What does this PR do?

This PR adds a new feature flag to libdd-data-pipeline in order to trim down telemetry for cases where is not needed (e.g. serverless)

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 23, 2026

📚 Documentation Check Results

⚠️ 877 documentation warning(s) found

📦 libdd-data-pipeline - 877 warning(s)


Updated: 2026-04-07 11:37:12 UTC | Commit: 4966130 | missing-docs job results

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 23, 2026

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/julio/opt-in-telemetry

Summary by Rule

Rule Base Branch PR Branch Change
unwrap_used 5 4 ✅ -1 (-20.0%)
Total 5 4 ✅ -1 (-20.0%)

Annotation Counts by File

File Base Branch PR Branch Change
libdd-data-pipeline/src/stats_exporter.rs 1 1 No change (0%)
libdd-data-pipeline/src/telemetry/mod.rs 1 0 ✅ -1 (-100.0%)
libdd-data-pipeline/src/trace_exporter/error.rs 1 1 No change (0%)
libdd-data-pipeline/src/trace_exporter/mod.rs 2 2 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 21 21 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 4 ✅ -1 (-20.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 196 195 ✅ -1 (-0.5%)

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.

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 23, 2026

🔒 Cargo Deny Results

⚠️ 1 issue(s) found, showing only errors (advisories, bans, sources)

📦 libdd-data-pipeline - 1 error(s)

Show output
error[vulnerability]: Denial of Service via Stack Exhaustion
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:269:1
    │
269 │ time 0.3.41 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
    │
    ├ ID: RUSTSEC-2026-0009
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0009
    ├ ## Impact
      
      When user-provided input is provided to any type that parses with the RFC 2822 format, a denial of
      service attack via stack exhaustion is possible. The attack relies on formally deprecated and
      rarely-used features that are part of the RFC 2822 format used in a malicious manner. Ordinary,
      non-malicious input will never encounter this scenario.
      
      ## Patches
      
      A limit to the depth of recursion was added in v0.3.47. From this version, an error will be returned
      rather than exhausting the stack.
      
      ## Workarounds
      
      Limiting the length of user input is the simplest way to avoid stack exhaustion, as the amount of
      the stack consumed would be at most a factor of the length of the input.
    ├ Announcement: https://github.com/time-rs/time/blob/main/CHANGELOG.md#0347-2026-02-05
    ├ Solution: Upgrade to >=0.3.47 (try `cargo update -p time`)
    ├ time v0.3.41
      └── tracing-appender v0.2.3
          └── libdd-log v1.0.0
              └── (dev) libdd-data-pipeline v3.0.1

advisories FAILED, bans ok, sources ok

Updated: 2026-04-07 11:37:06 UTC | Commit: 4966130 | dependency-check job results

@codecov-commenter
Copy link
Copy Markdown

codecov-commenter commented Mar 23, 2026

Codecov Report

❌ Patch coverage is 95.58824% with 12 lines in your changes missing coverage. Please review.
✅ Project coverage is 71.52%. Comparing base (5b6dffc) to head (36290ab).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1778      +/-   ##
==========================================
+ Coverage   71.46%   71.52%   +0.06%     
==========================================
  Files         426      427       +1     
  Lines       67374    67409      +35     
==========================================
+ Hits        48148    48216      +68     
+ Misses      19226    19193      -33     
Components Coverage Δ
libdd-crashtracker 65.99% <ø> (+0.05%) ⬆️
libdd-crashtracker-ffi 34.09% <ø> (ø)
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 86.86% <95.58%> (+0.20%) ⬆️
libdd-data-pipeline-ffi 75.88% <ø> (+1.02%) ⬆️
libdd-common 79.16% <ø> (ø)
libdd-common-ffi 73.87% <ø> (ø)
libdd-telemetry 62.80% <ø> (ø)
libdd-telemetry-ffi 16.75% <ø> (ø)
libdd-dogstatsd-client 82.64% <ø> (ø)
datadog-ipc 71.00% <ø> (ø)
libdd-profiling 82.13% <ø> (+0.01%) ⬆️
libdd-profiling-ffi 64.94% <ø> (ø)
datadog-sidecar 30.67% <ø> (+0.35%) ⬆️
datdog-sidecar-ffi 9.44% <ø> (+1.64%) ⬆️
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 87.24% <ø> (ø)
libdd-trace-protobuf 68.25% <ø> (ø)
libdd-trace-utils 88.73% <ø> (ø)
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-official
Copy link
Copy Markdown

datadog-official bot commented Mar 23, 2026

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

🎯 Code Coverage (details)
Patch Coverage: 95.59%
Overall Coverage: 71.53% (-0.00%)

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

@pr-commenter
Copy link
Copy Markdown

pr-commenter bot commented Mar 23, 2026

Benchmarks

Comparison

Benchmark execution time: 2026-03-25 08:47:41

Comparing candidate commit c00625e in PR branch julio/opt-in-telemetry with baseline commit c664ed7 in branch main.

Found 6 performance improvements and 12 performance regressions! Performance is the same for 42 metrics, 1 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:credit_card/is_card_number/ 378282246310005

  • 🟥 execution_time [+16.047µs; +16.201µs] or [+23.607%; +23.834%]
  • 🟥 throughput [-2831615.604op/s; -2808754.556op/s] or [-19.248%; -19.092%]

scenario:credit_card/is_card_number/378282246310005

  • 🟥 execution_time [+5.405µs; +5.523µs] or [+8.327%; +8.507%]
  • 🟥 throughput [-1207238.806op/s; -1183550.073op/s] or [-7.837%; -7.683%]

scenario:credit_card/is_card_number/37828224631000521389798

  • 🟥 execution_time [+7.453µs; +7.475µs] or [+16.321%; +16.368%]
  • 🟥 throughput [-3081244.660op/s; -3071624.412op/s] or [-14.071%; -14.027%]

scenario:credit_card/is_card_number/x371413321323331

  • 🟩 execution_time [-397.701ns; -395.813ns] or [-5.817%; -5.790%]
  • 🟩 throughput [+8990028.733op/s; +9033649.223op/s] or [+6.146%; +6.176%]

scenario:credit_card/is_card_number_no_luhn/ 378282246310005

  • 🟥 execution_time [+5.570µs; +5.637µs] or [+10.424%; +10.549%]
  • 🟥 throughput [-1785634.579op/s; -1766418.329op/s] or [-9.541%; -9.439%]

scenario:credit_card/is_card_number_no_luhn/378282246310005

  • 🟥 execution_time [+5.356µs; +5.410µs] or [+10.653%; +10.759%]
  • 🟥 throughput [-1931704.928op/s; -1914394.448op/s] or [-9.713%; -9.626%]

scenario:credit_card/is_card_number_no_luhn/37828224631000521389798

  • 🟥 execution_time [+7.458µs; +7.479µs] or [+16.333%; +16.380%]
  • 🟥 throughput [-3083423.542op/s; -3073894.013op/s] or [-14.079%; -14.035%]

scenario:credit_card/is_card_number_no_luhn/x371413321323331

  • 🟩 execution_time [-400.799ns; -398.713ns] or [-5.861%; -5.830%]
  • 🟩 throughput [+9054345.905op/s; +9101714.771op/s] or [+6.192%; +6.224%]

scenario:sql/obfuscate_sql_string

  • 🟩 execution_time [-198.947µs; -198.760µs] or [-69.577%; -69.512%]

scenario:write only interface

  • 🟩 execution_time [-2.507µs; -2.059µs] or [-45.679%; -37.516%]

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 c00625e 1774427381 julio/opt-in-telemetry
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 86.889µs 87.083µs ± 0.259µs 87.060µs ± 0.064µs 87.123µs 87.218µs 87.441µs 90.461µs 3.91% 11.172 142.295 0.30% 0.018µ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 [87.047µs; 87.119µs] or [-0.041%; +0.041%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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.408ms 3.442ms ± 0.021ms 3.437ms ± 0.010ms 3.449ms 3.485ms 3.506ms 3.527ms 2.64% 1.422 2.404 0.60% 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.439ms; 3.445ms] or [-0.084%; +0.084%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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.992µs 186.370µs ± 0.209µs 186.353µs ± 0.146µs 186.501µs 186.738µs 186.854µs 186.889µs 0.29% 0.381 -0.445 0.11% 0.015µs 1 200
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput 5350776.150op/s 5365688.064op/s ± 6008.398op/s 5366158.485op/s ± 4220.077op/s 5370312.950op/s 5375026.735op/s 5376292.599op/s 5376561.606op/s 0.19% -0.376 -0.449 0.11% 424.858op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.814µs 17.899µs ± 0.041µs 17.891µs ± 0.021µs 17.918µs 17.968µs 18.001µs 18.164µs 1.53% 1.803 8.337 0.23% 0.003µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 55054640.574op/s 55868836.247op/s ± 127881.149op/s 55894444.986op/s ± 66776.322op/s 55944371.557op/s 56040585.251op/s 56099786.436op/s 56135173.498op/s 0.43% -1.755 7.991 0.23% 9042.563op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.198µs 10.459µs ± 0.219µs 10.305µs ± 0.055µs 10.692µs 10.769µs 10.836µs 10.848µs 5.27% 0.378 -1.710 2.08% 0.015µs 1 200
normalization/normalize_name/normalize_name/good throughput 92183993.622op/s 95654688.959op/s ± 1983640.989op/s 97040739.097op/s ± 522334.740op/s 97357345.657op/s 97635255.486op/s 97804983.567op/s 98060424.684op/s 1.05% -0.369 -1.723 2.07% 140264.599op/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.341µs; 186.399µs] or [-0.016%; +0.016%] None None None
normalization/normalize_name/normalize_name/Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Long-.Too-Lo... throughput [5364855.358op/s; 5366520.770op/s] or [-0.016%; +0.016%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.893µs; 17.905µs] or [-0.032%; +0.032%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55851113.150op/s; 55886559.344op/s] or [-0.032%; +0.032%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.428µs; 10.489µs] or [-0.290%; +0.290%] None None None
normalization/normalize_name/normalize_name/good throughput [95379775.396op/s; 95929602.522op/s] or [-0.287%; +0.287%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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.092µs 146.339µs ± 1.828µs 146.019µs ± 0.511µs 146.610µs 148.029µs 152.176µs 163.838µs 12.20% 6.078 49.380 1.25% 0.129µ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.085µs; 146.592µs] or [-0.173%; +0.173%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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.164ms 4.169ms ± 0.008ms 4.168ms ± 0.001ms 4.170ms 4.172ms 4.176ms 4.275ms 2.56% 11.917 154.950 0.19% 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.168ms; 4.170ms] or [-0.026%; +0.026%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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 12.979ms 13.009ms ± 0.015ms 13.008ms ± 0.009ms 13.017ms 13.032ms 13.051ms 13.088ms 0.62% 1.125 3.481 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 [13.007ms; 13.011ms] or [-0.016%; +0.016%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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 18.160µs 26.497µs ± 9.862µs 18.446µs ± 0.228µs 34.947µs 44.622µs 45.726µs 69.934µs 279.12% 0.880 0.475 37.13% 0.697µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [25.130µs; 27.864µs] or [-5.158%; +5.158%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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.624µs 161.212µs ± 0.302µs 161.173µs ± 0.124µs 161.306µs 161.641µs 162.129µs 163.866µs 1.67% 4.016 29.859 0.19% 0.021µ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.170µs; 161.253µs] or [-0.026%; +0.026%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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.299µs 496.163µs ± 0.742µs 496.068µs ± 0.261µs 496.366µs 496.860µs 497.270µs 504.762µs 1.75% 7.910 88.433 0.15% 0.052µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1981131.266op/s 2015470.597op/s ± 2979.200op/s 2015851.762op/s ± 1061.290op/s 2016844.574op/s 2018044.208op/s 2018603.567op/s 2018981.567op/s 0.16% -7.786 86.495 0.15% 210.661op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 370.757µs 371.511µs ± 0.312µs 371.494µs ± 0.233µs 371.736µs 371.994µs 372.240µs 372.916µs 0.38% 0.475 1.129 0.08% 0.022µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2681568.414op/s 2691709.400op/s ± 2260.882op/s 2691830.050op/s ± 1688.770op/s 2693398.057op/s 2695040.696op/s 2696102.736op/s 2697181.563op/s 0.20% -0.468 1.106 0.08% 159.868op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 168.528µs 168.901µs ± 0.165µs 168.890µs ± 0.101µs 168.988µs 169.223µs 169.346µs 169.391µs 0.30% 0.463 0.139 0.10% 0.012µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5903507.040op/s 5920636.236op/s ± 5794.224op/s 5921003.079op/s ± 3530.761op/s 5924504.862op/s 5929428.098op/s 5931651.171op/s 5933718.160op/s 0.21% -0.457 0.133 0.10% 409.713op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.823µs 37.017µs ± 0.111µs 37.027µs ± 0.101µs 37.103µs 37.179µs 37.270µs 37.283µs 0.69% 0.109 -1.164 0.30% 0.008µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26821987.927op/s 27014790.460op/s ± 81111.286op/s 27007511.195op/s ± 73656.130op/s 27099271.650op/s 27123531.983op/s 27135712.746op/s 27156573.419op/s 0.55% -0.101 -1.173 0.30% 5735.434op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 46.208µs 46.299µs ± 0.098µs 46.286µs ± 0.027µs 46.319µs 46.372µs 46.443µs 47.527µs 2.68% 9.959 121.654 0.21% 0.007µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 21040532.340op/s 21598953.798op/s ± 44809.371op/s 21604692.151op/s ± 12741.646op/s 21616653.664op/s 21629507.821op/s 21636380.565op/s 21641063.748op/s 0.17% -9.804 119.027 0.21% 3168.501op/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.060µs; 496.266µs] or [-0.021%; +0.021%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2015057.709op/s; 2015883.486op/s] or [-0.020%; +0.020%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [371.468µs; 371.555µs] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2691396.063op/s; 2692022.736op/s] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [168.878µs; 168.924µs] or [-0.014%; +0.014%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5919833.212op/s; 5921439.260op/s] or [-0.014%; +0.014%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [37.002µs; 37.032µs] or [-0.042%; +0.042%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [27003549.216op/s; 27026031.704op/s] or [-0.042%; +0.042%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.285µs; 46.312µs] or [-0.029%; +0.029%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21592743.651op/s; 21605163.946op/s] or [-0.029%; +0.029%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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.900µs 3.915µs ± 0.002µs 3.915µs ± 0.001µs 3.916µs 3.919µs 3.920µs 3.922µs 0.18% -0.841 6.080 0.06% 0.000µs 1 200
credit_card/is_card_number/ throughput 254998112.715op/s 255449817.160op/s ± 159150.157op/s 255451183.296op/s ± 94077.487op/s 255546586.152op/s 255681755.211op/s 255721532.091op/s 256427884.299op/s 0.38% 0.854 6.163 0.06% 11253.616op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 79.159µs 79.874µs ± 0.424µs 79.806µs ± 0.287µs 80.099µs 80.645µs 81.097µs 81.830µs 2.54% 1.018 1.721 0.53% 0.030µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12220517.492op/s 12520046.788op/s ± 66162.050op/s 12530330.746op/s ± 45221.124op/s 12574443.101op/s 12607918.531op/s 12619855.910op/s 12632759.271op/s 0.82% -0.976 1.547 0.53% 4678.363op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 82.962µs 84.098µs ± 0.532µs 84.067µs ± 0.389µs 84.464µs 85.141µs 85.414µs 85.486µs 1.69% 0.390 -0.270 0.63% 0.038µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 11697841.414op/s 11891326.003op/s ± 75084.033op/s 11895246.709op/s ± 54923.086op/s 11947976.819op/s 12001208.072op/s 12038982.524op/s 12053765.059op/s 1.33% -0.361 -0.301 0.63% 5309.243op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.895µs 3.916µs ± 0.003µs 3.916µs ± 0.002µs 3.918µs 3.921µs 3.924µs 3.925µs 0.23% -0.683 5.547 0.09% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254794169.193op/s 255365278.621op/s ± 223275.111op/s 255382843.121op/s ± 142262.222op/s 255514366.295op/s 255652233.281op/s 255727732.216op/s 256718772.372op/s 0.52% 0.702 5.660 0.09% 15787.935op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 69.787µs 70.383µs ± 0.420µs 70.319µs ± 0.302µs 70.660µs 71.201µs 71.443µs 71.457µs 1.62% 0.680 -0.422 0.60% 0.030µs 1 200
credit_card/is_card_number/378282246310005 throughput 13994489.522op/s 14208542.813op/s ± 84445.118op/s 14220812.871op/s ± 61438.616op/s 14280571.348op/s 14312206.124op/s 14320499.623op/s 14329229.590op/s 0.76% -0.661 -0.460 0.59% 5971.172op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 53.052µs 53.129µs ± 0.041µs 53.123µs ± 0.025µs 53.155µs 53.186µs 53.231µs 53.371µs 0.47% 1.704 7.232 0.08% 0.003µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 18736908.329op/s 18822142.870op/s ± 14371.930op/s 18824282.149op/s ± 8800.702op/s 18832455.046op/s 18840503.480op/s 18844851.485op/s 18849579.260op/s 0.13% -1.689 7.134 0.08% 1016.249op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.428µs 6.440µs ± 0.005µs 6.440µs ± 0.004µs 6.444µs 6.449µs 6.452µs 6.453µs 0.21% 0.209 -0.681 0.08% 0.000µs 1 200
credit_card/is_card_number/x371413321323331 throughput 154958306.842op/s 155283688.224op/s ± 129051.028op/s 155289992.570op/s ± 100909.293op/s 155385867.709op/s 155473278.447op/s 155515815.467op/s 155569461.815op/s 0.18% -0.206 -0.682 0.08% 9125.286op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.898µs 3.916µs ± 0.003µs 3.915µs ± 0.002µs 3.918µs 3.921µs 3.923µs 3.925µs 0.25% -0.510 3.824 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 254770741.745op/s 255377526.312op/s ± 209622.655op/s 255398327.142op/s ± 136343.761op/s 255517902.358op/s 255660399.075op/s 255725833.089op/s 256551222.300op/s 0.45% 0.524 3.893 0.08% 14822.560op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 64.936µs 65.168µs ± 0.153µs 65.122µs ± 0.091µs 65.246µs 65.478µs 65.641µs 65.716µs 0.91% 1.081 0.827 0.23% 0.011µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15217101.097op/s 15345029.175op/s ± 35883.549op/s 15355795.272op/s ± 21413.392op/s 15371943.901op/s 15385825.658op/s 15393965.686op/s 15399886.041op/s 0.29% -1.069 0.791 0.23% 2537.350op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 58.525µs 59.037µs ± 0.237µs 58.993µs ± 0.155µs 59.171µs 59.445µs 59.583µs 59.775µs 1.33% 0.508 -0.216 0.40% 0.017µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 16729372.290op/s 16938894.581op/s ± 67988.112op/s 16951229.623op/s ± 44372.038op/s 16991279.655op/s 17031831.733op/s 17063458.101op/s 17086824.993op/s 0.80% -0.490 -0.240 0.40% 4807.486op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.893µs 3.915µs ± 0.003µs 3.915µs ± 0.001µs 3.916µs 3.919µs 3.920µs 3.921µs 0.17% -2.162 18.687 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 255030819.801op/s 255445383.690op/s ± 179896.332op/s 255457989.936op/s ± 93848.783op/s 255542170.847op/s 255649158.502op/s 255732038.735op/s 256883419.970op/s 0.56% 2.196 19.002 0.07% 12720.592op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 55.333µs 55.665µs ± 0.189µs 55.638µs ± 0.125µs 55.773µs 56.028µs 56.237µs 56.395µs 1.36% 1.098 1.475 0.34% 0.013µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 17732127.838op/s 17964889.766op/s ± 60862.807op/s 17973285.409op/s ± 40412.207op/s 18012562.412op/s 18038598.090op/s 18054405.670op/s 18072245.609op/s 0.55% -1.075 1.393 0.34% 4303.650op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 53.061µs 53.128µs ± 0.042µs 53.120µs ± 0.023µs 53.150µs 53.198µs 53.240µs 53.414µs 0.55% 2.004 9.998 0.08% 0.003µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 18721564.766op/s 18822307.622op/s ± 14738.147op/s 18825263.703op/s ± 8222.076op/s 18831873.814op/s 18840956.212op/s 18844963.097op/s 18846318.147op/s 0.11% -1.986 9.838 0.08% 1042.144op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.429µs 6.439µs ± 0.005µs 6.439µs ± 0.004µs 6.443µs 6.449µs 6.450µs 6.452µs 0.20% 0.314 -0.670 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 154996791.347op/s 155302146.082op/s ± 124513.060op/s 155311798.439op/s ± 95780.778op/s 155407875.295op/s 155476669.433op/s 155512467.254op/s 155553033.074op/s 0.16% -0.311 -0.673 0.08% 8804.403op/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.914µs; 3.915µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/ throughput [255427760.479op/s; 255471873.842op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [79.815µs; 79.933µs] or [-0.074%; +0.074%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12510877.365op/s; 12529216.212op/s] or [-0.073%; +0.073%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [84.024µs; 84.172µs] or [-0.088%; +0.088%] None None None
credit_card/is_card_number/ 378282246310005 throughput [11880920.078op/s; 11901731.928op/s] or [-0.088%; +0.088%] None None None
credit_card/is_card_number/37828224631 execution_time [3.915µs; 3.916µs] or [-0.012%; +0.012%] None None None
credit_card/is_card_number/37828224631 throughput [255334334.838op/s; 255396222.404op/s] or [-0.012%; +0.012%] None None None
credit_card/is_card_number/378282246310005 execution_time [70.324µs; 70.441µs] or [-0.083%; +0.083%] None None None
credit_card/is_card_number/378282246310005 throughput [14196839.532op/s; 14220246.094op/s] or [-0.082%; +0.082%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [53.123µs; 53.135µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [18820151.059op/s; 18824134.681op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.439µs; 6.441µs] or [-0.012%; +0.012%] None None None
credit_card/is_card_number/x371413321323331 throughput [155265802.993op/s; 155301573.455op/s] or [-0.012%; +0.012%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.915µs; 3.916µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ throughput [255348474.628op/s; 255406577.995op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [65.147µs; 65.189µs] or [-0.032%; +0.032%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15340056.061op/s; 15350002.290op/s] or [-0.032%; +0.032%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [59.004µs; 59.070µs] or [-0.056%; +0.056%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [16929472.083op/s; 16948317.080op/s] or [-0.056%; +0.056%] None None None
credit_card/is_card_number_no_luhn/37828224631 execution_time [3.914µs; 3.915µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631 throughput [255420451.789op/s; 255470315.592op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [55.639µs; 55.691µs] or [-0.047%; +0.047%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [17956454.766op/s; 17973324.766op/s] or [-0.047%; +0.047%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [53.123µs; 53.134µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [18820265.057op/s; 18824350.188op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.438µs; 6.440µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [155284889.769op/s; 155319402.395op/s] or [-0.011%; +0.011%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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 239.437ns 251.910ns ± 14.547ns 245.160ns ± 4.177ns 256.548ns 284.180ns 292.028ns 298.543ns 21.77% 1.505 1.160 5.76% 1.029ns 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 [249.894ns; 253.926ns] or [-0.800%; +0.800%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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 190.789ns 193.149ns ± 2.105ns 192.851ns ± 1.413ns 194.075ns 197.015ns 200.123ns 202.595ns 5.05% 1.429 2.852 1.09% 0.149ns 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.857ns; 193.441ns] or [-0.151%; +0.151%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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 1.187µs 3.205µs ± 1.616µs 2.966µs ± 0.027µs 2.992µs 3.646µs 14.158µs 18.730µs 531.47% 7.758 62.895 50.29% 0.114µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [2.981µs; 3.429µs] or [-6.987%; +6.987%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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 732.897µs 734.300µs ± 0.650µs 734.208µs ± 0.423µs 734.682µs 735.488µs 735.966µs 736.766µs 0.35% 0.588 0.556 0.09% 0.046µ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 [734.210µs; 734.390µs] or [-0.012%; +0.012%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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 35.280µs 35.563µs ± 0.428µs 35.385µs ± 0.047µs 35.452µs 36.375µs 36.416µs 38.556µs 8.96% 2.717 11.075 1.20% 0.030µ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 [35.504µs; 35.623µs] or [-0.167%; +0.167%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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.946µs 5.020µs ± 0.048µs 5.021µs ± 0.048µs 5.049µs 5.108µs 5.113µs 5.114µs 1.85% 0.258 -0.938 0.95% 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.014µs; 5.027µs] or [-0.132%; +0.132%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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.133ms 4.159ms ± 0.009ms 4.161ms ± 0.001ms 4.163ms 4.166ms 4.168ms 4.169ms 0.18% -2.057 2.819 0.21% 0.001ms 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.158ms; 4.160ms] or [-0.029%; +0.029%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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.276µs 2.362µs ± 0.018µs 2.364µs ± 0.005µs 2.371µs 2.380µs 2.385µs 2.388µs 1.02% -2.639 7.682 0.76% 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.359µs; 2.364µs] or [-0.106%; +0.106%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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 48.579ms 48.841ms ± 1.018ms 48.687ms ± 0.055ms 48.767ms 49.003ms 51.143ms 59.947ms 23.13% 9.223 89.432 2.08% 0.072ms 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 [48.699ms; 48.982ms] or [-0.289%; +0.289%] None None None

Group 20

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz c00625e 1774427381 julio/opt-in-telemetry
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 13.922ms 13.974ms ± 0.030ms 13.969ms ± 0.013ms 13.983ms 14.028ms 14.086ms 14.144ms 1.25% 2.589 10.016 0.21% 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 [13.970ms; 13.978ms] or [-0.030%; +0.030%] None None None

Baseline

Omitted due to size.

@hoolioh hoolioh force-pushed the julio/opt-in-telemetry branch from e973616 to 32bfed2 Compare March 23, 2026 14:53
@hoolioh hoolioh changed the title Julio/opt in telemetry refactor(libdd-data-pipeline): feature gate telemetry Mar 24, 2026
@dd-octo-sts
Copy link
Copy Markdown
Contributor

dd-octo-sts bot commented Mar 24, 2026

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 82.89 MB 82.92 MB +.03% (+32.12 KB) 🔍
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 7.63 MB 7.63 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 98.86 MB 98.90 MB +.04% (+44.00 KB) 🔍
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 10.08 MB 10.08 MB +0% (+688 B) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 24.98 MB 24.99 MB +.02% (+7.50 KB) 🔍
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 77.85 KB 77.85 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 182.37 MB 182.46 MB +.05% (+96.00 KB) 🔍
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 904.68 MB 905.61 MB +.10% (+954.76 KB) 🔍
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 7.85 MB 7.85 MB +.03% (+3.00 KB) 🔍
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 77.85 KB 77.85 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 23.51 MB 23.51 MB +.03% (+8.00 KB) 🔍
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 45.85 MB 45.86 MB +.02% (+11.91 KB) 🔍
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 21.48 MB 21.48 MB --.02% (-4.50 KB) 💪
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 79.06 KB 79.06 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 186.38 MB 186.37 MB -0% (-8.00 KB) 👌
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 889.47 MB 890.28 MB +.09% (+824.52 KB) 🔍
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 6.09 MB 6.10 MB +.03% (+2.00 KB) 🔍
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 79.06 KB 79.06 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 25.16 MB 25.16 MB +.03% (+8.00 KB) 🔍
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 43.33 MB 43.34 MB +.02% (+9.09 KB) 🔍
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 74.07 MB 74.09 MB +.03% (+24.65 KB) 🔍
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 8.49 MB 8.49 MB +.04% (+4.00 KB) 🔍
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 91.32 MB 91.36 MB +.04% (+42.27 KB) 🔍
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 10.13 MB 10.14 MB +.03% (+4.08 KB) 🔍

@hoolioh hoolioh marked this pull request as ready for review March 25, 2026 10:50
@hoolioh hoolioh requested review from a team as code owners March 25, 2026 10:50
assert!(builder.config.debug_enabled);
assert_eq!(
<String as AsRef<str>>::as_ref(&builder.config.endpoint().unwrap().url.to_string()),
"http://localhost/telemetry/proxy/api/v2/apmtelemetry"
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.

Is there a similar test somewhere?

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.

Yes, there are test in libdd-telemetry that check specifically for that

Comment on lines +295 to 297
#[cfg(feature = "telemetry")]
#[no_mangle]
pub unsafe extern "C" fn ddog_trace_exporter_config_enable_telemetry(
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.

Not sure if we should feature gate it, instead of making it a no-op since it's part of the API

You could imagine that we have a language where we want to build a shared library.
The code in the language would probably look like this

if (!serverless) {
  ddog_trace_exporter_config_enable_telemetry();
}

if we feature gate this, we can't have this switch at rutime and force them to use macros

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.

I was unsure what to do here. In order to maintain ABI compatibility it would be better to write no-op functions but, since most of the data-pipeline crate users are migrating to building their own version from source, I think it'd be cleaner to reduce the API surface as much as possible. At the end of the day they're going to control the features they want to introduce.
Anyway it's an interesting topic to discuss internally because our position is to encourage every consumer to build their own thing but we didn't discuss what to do with the prebuilt binary. I'll bring this up next common standup.

Comment on lines 2 to 4
// SPDX-License-Identifier: Apache-2.0

//! Telemetry provides a client to send results accumulated in 'Metrics'.
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.

I think that for this file where there are a lot of telemetry/not(telemetry) feature gate, doing something like this would be cleaner

#[cfg(feature = "telemetry")]
mod inner {
  //telemetry only imports, items
  struct SendPayloadTelemetry
  struct TelemetryClient
}

#[cfg(not(feature = "telemetry"))]
mod inner {
 // placeholder
}

use inner::*;

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.

I'll try that. LMK how it looks.

}
Ok(())
#[cfg(not(feature = "telemetry"))]
impl SendPayloadTelemetry {
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.

Is it possible to feature gate the whole telemetry module in libdd-data-pipeline and it's use in trace_exporter rather than creating no-op functions ?

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 fist try was using that approach but looking at the changes it seemed that the trace exporter was cluttered with #[cfg(feature)] statements which in the long run would be very hard to maintain, specially if we keep gating features. Also it keeps most of the changes in the module affected and lastly since feature statements only apply to the following block sometimes adding a new statement requires refactoring the original code.
Anyway I wanted to test this approach in order to discuss how it feels. Do you think is incovenient?

@hoolioh hoolioh force-pushed the julio/opt-in-telemetry branch from c3b2340 to 0e0ad70 Compare April 7, 2026 08:21
@hoolioh hoolioh force-pushed the julio/opt-in-telemetry branch from 9ae653c to 36290ab Compare April 7, 2026 11:36
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.

5 participants