Skip to content

fix(profiling): skip TLS init for non-HTTPS endpoints#1796

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 2 commits into
mainfrom
r1viollet/fix_certificate_issue
Mar 26, 2026
Merged

fix(profiling): skip TLS init for non-HTTPS endpoints#1796
gh-worker-dd-mergequeue-cf854d[bot] merged 2 commits into
mainfrom
r1viollet/fix_certificate_issue

Conversation

@r1viollet

Copy link
Copy Markdown
Contributor

What does this PR do?

Since 9a61cae (perf(profiling): cache TLS in ProfileExporter::new, 2026-02-27), TLS configuration is initialized unconditionally in ProfileExporter::new(), even when the endpoint uses plain HTTP (e.g. agent mode at http://:8126), unix sockets, or named pipes.

On Linux this eagerly loads the system CA certificate store via rustls-platform-verifier. In minimal container images (e.g. a bare ubuntu:20.04 without the ca-certificates package), there are no certs to load, so the call fails with:

failed to initialize TLS configuration: unexpected error:
No CA certificates were loaded from the system

This surfaced in ddprof after the libdatadog v29 upgrade: the profiler targets the Datadog agent over HTTP and has no reason to touch the cert store at all.

Fix: only call cached_tls_config() and apply tls_backend_preconfigured() when the endpoint scheme is "https". All other schemes (http, unix, windows, file) bypass TLS initialization entirely.

Motivation

Avoid the following error:

Failure creating exporter - ddog_prof_Exporter_new failed: failed to initialize TLS configuration: unexpected error: No CA certificates were loaded from the system

Additional Notes

NA

How to test the change?

We need a docker container that has no certificates.
Possibly ubuntu 20

@github-actions

Copy link
Copy Markdown
Contributor

Clippy Allow Annotation Report

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/r1viollet/fix_certificate_issue

Summary by Rule

Rule Base Branch PR Branch Change

Annotation Counts by File

File Base Branch PR Branch Change

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

codecov-commenter commented Mar 25, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 71.08%. Comparing base (db9b9f4) to head (407c70b).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1796      +/-   ##
==========================================
+ Coverage   71.01%   71.08%   +0.06%     
==========================================
  Files         411      411              
  Lines       64803    64942     +139     
==========================================
+ Hits        46023    46163     +140     
+ Misses      18780    18779       -1     
Components Coverage Δ
libdd-crashtracker 65.29% <ø> (ø)
libdd-crashtracker-ffi 34.98% <ø> (ø)
libdd-alloc 98.77% <ø> (ø)
libdd-data-pipeline 87.63% <ø> (+0.02%) ⬆️
libdd-data-pipeline-ffi 73.45% <ø> (ø)
libdd-common 79.78% <ø> (ø)
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% <100.00%> (+0.03%) ⬆️
libdd-profiling-ffi 64.94% <ø> (ø)
datadog-sidecar 31.63% <ø> (ø)
datdog-sidecar-ffi 13.34% <ø> (ø)
spawn-worker 54.69% <ø> (ø)
libdd-tinybytes 93.16% <ø> (ø)
libdd-trace-normalization 81.71% <ø> (ø)
libdd-trace-obfuscation 87.37% <ø> (ø)
libdd-trace-protobuf 68.25% <ø> (ø)
libdd-trace-utils 88.95% <ø> (ø)
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

datadog-official Bot commented Mar 25, 2026

Copy link
Copy Markdown

✅ Tests

🎉 All green!

❄️ No new flaky tests detected
🧪 All tests passed

🎯 Code Coverage (details)
Patch Coverage: 100.00%
Overall Coverage: 71.08%

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

@pr-commenter

pr-commenter Bot commented Mar 25, 2026

Copy link
Copy Markdown

Benchmarks

Comparison

Benchmark execution time: 2026-03-26 09:04:10

Comparing candidate commit 407c70b in PR branch r1viollet/fix_certificate_issue with baseline commit b1d5bcf in branch main.

Found 0 performance improvements and 2 performance regressions! Performance is the same for 60 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:receiver_entry_point/report/2598

  • 🟥 execution_time [+179.672µs; +187.070µs] or [+5.244%; +5.460%]

scenario:two way interface

  • 🟥 execution_time [+726.491ns; +1075.236ns] or [+5.201%; +7.698%]

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 407c70b 1774514727 r1viollet/fix_certificate_issue
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.974ns 192.118ns ± 1.981ns 191.961ns ± 1.539ns 193.220ns 195.462ns 198.608ns 201.688ns 5.07% 1.507 3.872 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 [191.843ns; 192.392ns] or [-0.143%; +0.143%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.969ms 14.020ms ± 0.031ms 14.016ms ± 0.015ms 14.031ms 14.069ms 14.142ms 14.213ms 1.40% 2.561 10.543 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.016ms; 14.024ms] or [-0.031%; +0.031%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.069ns 254.513ns ± 12.018ns 250.106ns ± 3.796ns 255.110ns 284.148ns 287.712ns 288.679ns 15.42% 1.785 1.884 4.71% 0.850ns 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 [252.848ns; 256.179ns] or [-0.654%; +0.654%] None None None

Group 4

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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 739.595µs 740.455µs ± 0.450µs 740.409µs ± 0.229µs 740.615µs 741.320µs 741.950µs 742.438µs 0.27% 1.352 3.270 0.06% 0.032µ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 [740.393µs; 740.518µs] or [-0.008%; +0.008%] None None None

Group 5

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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 34.817µs 35.321µs ± 0.833µs 34.934µs ± 0.058µs 35.119µs 37.086µs 37.112µs 38.425µs 10.00% 1.734 1.303 2.35% 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 [35.206µs; 35.437µs] or [-0.327%; +0.327%] None None None

Group 6

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.767µs 161.417µs ± 0.379µs 161.356µs ± 0.129µs 161.509µs 161.805µs 162.305µs 165.322µs 2.46% 6.149 56.947 0.23% 0.027µ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.364µs; 161.469µs] or [-0.033%; +0.033%] None None None

Group 7

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.821µs 14.869µs ± 1.074µs 14.043µs ± 0.150µs 16.073µs 16.387µs 16.628µs 17.075µs 21.59% 0.404 -1.714 7.21% 0.076µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [14.720µs; 15.018µs] or [-1.001%; +1.001%] None None None

Group 8

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.724µs 186.096µs ± 0.213µs 186.092µs ± 0.177µs 186.269µs 186.463µs 186.542µs 186.625µs 0.29% 0.256 -0.792 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 5358334.608op/s 5373581.220op/s ± 6154.932op/s 5373695.880op/s ± 5119.446op/s 5378729.090op/s 5382698.022op/s 5383850.788op/s 5384340.990op/s 0.20% -0.252 -0.796 0.11% 435.219op/s 1 200
normalization/normalize_name/normalize_name/bad-name execution_time 17.799µs 17.896µs ± 0.059µs 17.892µs ± 0.025µs 17.916µs 17.959µs 17.993µs 18.548µs 3.67% 6.643 70.482 0.33% 0.004µs 1 200
normalization/normalize_name/normalize_name/bad-name throughput 53915292.280op/s 55878812.681op/s ± 181627.423op/s 55892357.895op/s ± 77655.349op/s 55969861.877op/s 56070269.907op/s 56125580.788op/s 56183223.406op/s 0.52% -6.366 66.505 0.32% 12842.998op/s 1 200
normalization/normalize_name/normalize_name/good execution_time 10.553µs 10.603µs ± 0.034µs 10.599µs ± 0.024µs 10.624µs 10.658µs 10.683µs 10.804µs 1.93% 1.262 4.917 0.32% 0.002µs 1 200
normalization/normalize_name/normalize_name/good throughput 92560064.119op/s 94313108.669op/s ± 299006.245op/s 94345556.715op/s ± 215783.441op/s 94552910.940op/s 94701467.256op/s 94742636.383op/s 94761008.429op/s 0.44% -1.212 4.575 0.32% 21142.934op/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.066µs; 186.125µ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 [5372728.206op/s; 5374434.235op/s] or [-0.016%; +0.016%] None None None
normalization/normalize_name/normalize_name/bad-name execution_time [17.888µs; 17.904µs] or [-0.046%; +0.046%] None None None
normalization/normalize_name/normalize_name/bad-name throughput [55853640.867op/s; 55903984.495op/s] or [-0.045%; +0.045%] None None None
normalization/normalize_name/normalize_name/good execution_time [10.598µs; 10.608µs] or [-0.044%; +0.044%] None None None
normalization/normalize_name/normalize_name/good throughput [94271669.279op/s; 94354548.059op/s] or [-0.044%; +0.044%] None None None

Group 9

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.384µs 2.414µs ± 0.013µs 2.413µs ± 0.007µs 2.420µs 2.439µs 2.462µs 2.471µs 2.41% 1.258 3.352 0.53% 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.412µs; 2.416µs] or [-0.074%; +0.074%] None None None

Group 10

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.238µs 146.480µs ± 1.847µs 146.240µs ± 0.548µs 146.706µs 148.122µs 153.384µs 165.144µs 12.93% 6.463 56.103 1.26% 0.131µ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.224µs; 146.736µs] or [-0.175%; +0.175%] None None None

Group 11

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.211ms 4.218ms ± 0.009ms 4.217ms ± 0.002ms 4.219ms 4.223ms 4.240ms 4.327ms 2.61% 9.470 109.554 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_timestamped_x1000 execution_time [4.217ms; 4.219ms] or [-0.029%; +0.029%] None None None

Group 12

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.893µs 3.915µs ± 0.003µs 3.914µs ± 0.002µs 3.916µs 3.920µs 3.921µs 3.922µs 0.19% -1.456 12.335 0.08% 0.000µs 1 200
credit_card/is_card_number/ throughput 254977092.978op/s 255448535.053op/s ± 193015.941op/s 255472689.970op/s ± 101209.223op/s 255555455.534op/s 255688506.353op/s 255768761.063op/s 256847163.372op/s 0.54% 1.484 12.558 0.08% 13648.288op/s 1 200
credit_card/is_card_number/ 3782-8224-6310-005 execution_time 79.375µs 80.155µs ± 0.165µs 80.175µs ± 0.064µs 80.241µs 80.327µs 80.407µs 80.847µs 0.84% -1.555 6.469 0.21% 0.012µs 1 200
credit_card/is_card_number/ 3782-8224-6310-005 throughput 12368988.906op/s 12475864.098op/s ± 25797.696op/s 12472788.119op/s ± 10023.121op/s 12481925.861op/s 12523439.128op/s 12570695.634op/s 12598429.006op/s 1.01% 1.592 6.523 0.21% 1824.173op/s 1 200
credit_card/is_card_number/ 378282246310005 execution_time 67.927µs 68.107µs ± 0.075µs 68.100µs ± 0.040µs 68.142µs 68.209µs 68.263µs 68.716µs 0.91% 3.007 21.343 0.11% 0.005µs 1 200
credit_card/is_card_number/ 378282246310005 throughput 14552577.084op/s 14682737.001op/s ± 16139.730op/s 14684367.946op/s ± 8718.411op/s 14692796.581op/s 14702582.891op/s 14709384.998op/s 14721740.699op/s 0.25% -2.960 20.878 0.11% 1141.251op/s 1 200
credit_card/is_card_number/37828224631 execution_time 3.893µs 3.915µs ± 0.003µs 3.914µs ± 0.001µs 3.916µs 3.919µs 3.922µs 3.936µs 0.56% 0.538 19.461 0.08% 0.000µs 1 200
credit_card/is_card_number/37828224631 throughput 254042743.387op/s 255457799.362op/s ± 209178.354op/s 255475570.714op/s ± 96994.916op/s 255570002.471op/s 255665442.684op/s 255739342.141op/s 256856697.076op/s 0.54% -0.486 19.464 0.08% 14791.143op/s 1 200
credit_card/is_card_number/378282246310005 execution_time 64.880µs 64.937µs ± 0.035µs 64.930µs ± 0.016µs 64.955µs 64.989µs 65.023µs 65.194µs 0.41% 2.471 14.213 0.05% 0.002µs 1 200
credit_card/is_card_number/378282246310005 throughput 15338862.185op/s 15399625.361op/s ± 8213.297op/s 15401283.933op/s ± 3907.895op/s 15404605.823op/s 15409997.141op/s 15412373.444op/s 15412973.726op/s 0.08% -2.455 14.061 0.05% 580.768op/s 1 200
credit_card/is_card_number/37828224631000521389798 execution_time 45.461µs 45.648µs ± 0.075µs 45.659µs ± 0.049µs 45.700µs 45.763µs 45.781µs 45.789µs 0.28% -0.315 -0.591 0.16% 0.005µs 1 200
credit_card/is_card_number/37828224631000521389798 throughput 21839427.791op/s 21906915.386op/s ± 35968.232op/s 21901296.338op/s ± 23458.897op/s 21933459.919op/s 21969561.955op/s 21986458.756op/s 21996674.103op/s 0.44% 0.321 -0.586 0.16% 2543.338op/s 1 200
credit_card/is_card_number/x371413321323331 execution_time 6.828µs 6.836µs ± 0.004µs 6.836µs ± 0.002µs 6.839µs 6.843µs 6.848µs 6.866µs 0.43% 1.882 10.347 0.06% 0.000µs 1 200
credit_card/is_card_number/x371413321323331 throughput 145653444.360op/s 146274710.295op/s ± 90650.454op/s 146285678.632op/s ± 47376.572op/s 146326507.047op/s 146393346.987op/s 146448161.752op/s 146459259.799op/s 0.12% -1.866 10.216 0.06% 6409.955op/s 1 200
credit_card/is_card_number_no_luhn/ execution_time 3.897µs 3.915µs ± 0.003µs 3.915µs ± 0.002µs 3.917µs 3.920µs 3.922µs 3.923µs 0.21% -0.653 4.605 0.08% 0.000µs 1 200
credit_card/is_card_number_no_luhn/ throughput 254915504.240op/s 255428026.026op/s ± 202965.615op/s 255449880.762op/s ± 130857.193op/s 255560376.146op/s 255709177.789op/s 255783973.701op/s 256612182.862op/s 0.46% 0.668 4.689 0.08% 14351.836op/s 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time 65.177µs 65.751µs ± 0.072µs 65.760µs ± 0.025µs 65.782µs 65.823µs 65.851µs 65.865µs 0.16% -5.120 38.166 0.11% 0.005µs 1 200
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput 15182532.744op/s 15208860.151op/s ± 16656.528op/s 15206926.765op/s ± 5748.770op/s 15212894.390op/s 15225890.729op/s 15249702.585op/s 15342846.433op/s 0.89% 5.166 38.638 0.11% 1177.794op/s 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time 53.355µs 53.422µs ± 0.036µs 53.420µs ± 0.023µs 53.442µs 53.492µs 53.525µs 53.537µs 0.22% 0.635 0.181 0.07% 0.003µs 1 200
credit_card/is_card_number_no_luhn/ 378282246310005 throughput 18678505.660op/s 18718803.327op/s ± 12691.843op/s 18719505.192op/s ± 8043.540op/s 18727879.871op/s 18736368.203op/s 18740234.882op/s 18742410.196op/s 0.12% -0.631 0.175 0.07% 897.449op/s 1 200
credit_card/is_card_number_no_luhn/37828224631 execution_time 3.897µs 3.914µs ± 0.003µs 3.914µs ± 0.002µs 3.916µs 3.919µs 3.921µs 3.922µs 0.20% -1.168 8.533 0.07% 0.000µs 1 200
credit_card/is_card_number_no_luhn/37828224631 throughput 254968262.242op/s 255463600.596op/s ± 175478.833op/s 255466625.696op/s ± 106334.220op/s 255565766.346op/s 255714178.112op/s 255826288.536op/s 256623813.303op/s 0.45% 1.187 8.661 0.07% 12408.227op/s 1 200
credit_card/is_card_number_no_luhn/378282246310005 execution_time 50.143µs 50.227µs ± 0.038µs 50.222µs ± 0.025µs 50.253µs 50.298µs 50.316µs 50.345µs 0.25% 0.410 0.051 0.08% 0.003µs 1 200
credit_card/is_card_number_no_luhn/378282246310005 throughput 19862797.725op/s 19909756.127op/s ± 15054.807op/s 19911717.419op/s ± 10086.205op/s 19919790.970op/s 19931912.885op/s 19939166.123op/s 19942981.023op/s 0.16% -0.405 0.045 0.08% 1064.536op/s 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time 45.456µs 45.654µs ± 0.080µs 45.656µs ± 0.058µs 45.712µs 45.785µs 45.825µs 45.836µs 0.39% -0.020 -0.490 0.18% 0.006µs 1 200
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput 21816763.188op/s 21903740.835op/s ± 38550.334op/s 21902848.822op/s ± 27982.344op/s 21933885.793op/s 21968034.757op/s 21985794.498op/s 21999384.017op/s 0.44% 0.028 -0.488 0.18% 2725.920op/s 1 200
credit_card/is_card_number_no_luhn/x371413321323331 execution_time 6.828µs 6.837µs ± 0.004µs 6.836µs ± 0.003µs 6.839µs 6.845µs 6.848µs 6.849µs 0.19% 0.455 -0.118 0.06% 0.000µs 1 200
credit_card/is_card_number_no_luhn/x371413321323331 throughput 146000042.912op/s 146270824.440op/s ± 92765.261op/s 146279762.195op/s ± 58101.362op/s 146333371.327op/s 146400150.149op/s 146454609.056op/s 146459289.123op/s 0.12% -0.452 -0.122 0.06% 6559.495op/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.010%; +0.010%] None None None
credit_card/is_card_number/ throughput [255421784.900op/s; 255475285.206op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 execution_time [80.132µs; 80.178µs] or [-0.029%; +0.029%] None None None
credit_card/is_card_number/ 3782-8224-6310-005 throughput [12472288.785op/s; 12479439.411op/s] or [-0.029%; +0.029%] None None None
credit_card/is_card_number/ 378282246310005 execution_time [68.097µs; 68.118µs] or [-0.015%; +0.015%] None None None
credit_card/is_card_number/ 378282246310005 throughput [14680500.190op/s; 14684973.813op/s] or [-0.015%; +0.015%] None None None
credit_card/is_card_number/37828224631 execution_time [3.914µs; 3.915µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/37828224631 throughput [255428809.254op/s; 255486789.470op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number/378282246310005 execution_time [64.932µs; 64.941µs] or [-0.007%; +0.007%] None None None
credit_card/is_card_number/378282246310005 throughput [15398487.077op/s; 15400763.645op/s] or [-0.007%; +0.007%] None None None
credit_card/is_card_number/37828224631000521389798 execution_time [45.637µs; 45.658µs] or [-0.023%; +0.023%] None None None
credit_card/is_card_number/37828224631000521389798 throughput [21901930.535op/s; 21911900.237op/s] or [-0.023%; +0.023%] None None None
credit_card/is_card_number/x371413321323331 execution_time [6.836µs; 6.837µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number/x371413321323331 throughput [146262147.014op/s; 146287273.576op/s] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ execution_time [3.915µs; 3.915µs] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ throughput [255399896.944op/s; 255456155.108op/s] or [-0.011%; +0.011%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 execution_time [65.741µs; 65.761µs] or [-0.015%; +0.015%] None None None
credit_card/is_card_number_no_luhn/ 3782-8224-6310-005 throughput [15206551.716op/s; 15211168.585op/s] or [-0.015%; +0.015%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 execution_time [53.417µs; 53.427µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/ 378282246310005 throughput [18717044.360op/s; 18720562.294op/s] or [-0.009%; +0.009%] 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 [255439280.918op/s; 255487920.275op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/378282246310005 execution_time [50.221µs; 50.232µs] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/378282246310005 throughput [19907669.675op/s; 19911842.578op/s] or [-0.010%; +0.010%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 execution_time [45.643µs; 45.666µs] or [-0.024%; +0.024%] None None None
credit_card/is_card_number_no_luhn/37828224631000521389798 throughput [21898398.129op/s; 21909083.540op/s] or [-0.024%; +0.024%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 execution_time [6.836µs; 6.837µs] or [-0.009%; +0.009%] None None None
credit_card/is_card_number_no_luhn/x371413321323331 throughput [146257968.067op/s; 146283680.813op/s] or [-0.009%; +0.009%] None None None

Group 13

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.145ms 49.402ms ± 1.063ms 49.247ms ± 0.043ms 49.298ms 49.490ms 55.966ms 59.248ms 20.31% 8.093 65.734 2.15% 0.075ms 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.255ms; 49.549ms] or [-0.298%; +0.298%] None None None

Group 14

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.216ms 4.223ms ± 0.003ms 4.223ms ± 0.002ms 4.225ms 4.228ms 4.230ms 4.238ms 0.35% 0.455 2.048 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.223ms; 4.224ms] or [-0.010%; +0.010%] None None None

Group 15

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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 285.250µs 285.869µs ± 0.620µs 285.768µs ± 0.171µs 285.959µs 286.361µs 288.772µs 291.249µs 1.92% 6.083 45.061 0.22% 0.044µ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 [285.783µs; 285.955µs] or [-0.030%; +0.030%] None None None

Group 16

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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 916.149µs 918.887µs ± 4.497µs 918.156µs ± 0.873µs 919.083µs 920.660µs 946.667µs 951.896µs 3.67% 5.782 35.146 0.49% 0.318µ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 [918.264µs; 919.510µs] or [-0.068%; +0.068%] None None None

Group 17

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.766µs 496.735µs ± 1.010µs 496.547µs ± 0.282µs 496.791µs 498.582µs 500.384µs 503.890µs 1.48% 3.899 19.316 0.20% 0.071µs 1 200
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput 1984560.341op/s 2013154.448op/s ± 4062.042op/s 2013908.049op/s ± 1144.054op/s 2015128.916op/s 2016507.071op/s 2016857.120op/s 2017082.673op/s 0.16% -3.862 18.958 0.20% 287.230op/s 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time 370.921µs 371.612µs ± 0.258µs 371.599µs ± 0.162µs 371.764µs 372.071µs 372.241µs 372.608µs 0.27% 0.511 0.932 0.07% 0.018µs 1 200
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput 2683786.580op/s 2690979.697op/s ± 1869.539op/s 2691073.376op/s ± 1174.443op/s 2692204.450op/s 2693785.734op/s 2694913.645op/s 2695994.713op/s 0.18% -0.505 0.920 0.07% 132.196op/s 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time 168.307µs 168.662µs ± 0.143µs 168.666µs ± 0.101µs 168.759µs 168.874µs 169.007µs 169.080µs 0.25% 0.032 -0.073 0.08% 0.010µs 1 200
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput 5914354.372op/s 5929025.044op/s ± 5031.871op/s 5928890.678op/s ± 3534.030op/s 5932620.744op/s 5937559.164op/s 5940595.983op/s 5941526.809op/s 0.21% -0.027 -0.076 0.08% 355.807op/s 1 200
normalization/normalize_service/normalize_service/[empty string] execution_time 36.847µs 37.018µs ± 0.142µs 36.957µs ± 0.077µs 37.159µs 37.251µs 37.310µs 37.362µs 1.10% 0.589 -1.147 0.38% 0.010µs 1 200
normalization/normalize_service/normalize_service/[empty string] throughput 26765141.016op/s 27014508.125op/s ± 103118.479op/s 27058593.929op/s ± 56465.986op/s 27102313.923op/s 27127515.840op/s 27136758.656op/s 27139233.858op/s 0.30% -0.583 -1.157 0.38% 7291.578op/s 1 200
normalization/normalize_service/normalize_service/test_ASCII execution_time 46.280µs 46.423µs ± 0.167µs 46.400µs ± 0.038µs 46.448µs 46.531µs 46.584µs 48.168µs 3.81% 8.121 75.962 0.36% 0.012µs 1 200
normalization/normalize_service/normalize_service/test_ASCII throughput 20760485.608op/s 21541172.788op/s ± 75298.620op/s 21551514.376op/s ± 17831.826op/s 21567465.413op/s 21590773.358op/s 21602847.735op/s 21607836.814op/s 0.26% -7.993 74.149 0.35% 5324.416op/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.595µs; 496.875µs] or [-0.028%; +0.028%] None None None
normalization/normalize_service/normalize_service/A0000000000000000000000000000000000000000000000000... throughput [2012591.488op/s; 2013717.408op/s] or [-0.028%; +0.028%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて execution_time [371.576µs; 371.648µs] or [-0.010%; +0.010%] None None None
normalization/normalize_service/normalize_service/Data🐨dog🐶 繋がっ⛰てて throughput [2690720.597op/s; 2691238.797op/s] or [-0.010%; +0.010%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters execution_time [168.642µs; 168.682µs] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/Test Conversion 0f Weird !@#$%^&**() Characters throughput [5928327.675op/s; 5929722.413op/s] or [-0.012%; +0.012%] None None None
normalization/normalize_service/normalize_service/[empty string] execution_time [36.998µs; 37.037µs] or [-0.053%; +0.053%] None None None
normalization/normalize_service/normalize_service/[empty string] throughput [27000216.895op/s; 27028799.354op/s] or [-0.053%; +0.053%] None None None
normalization/normalize_service/normalize_service/test_ASCII execution_time [46.400µs; 46.446µs] or [-0.050%; +0.050%] None None None
normalization/normalize_service/normalize_service/test_ASCII throughput [21530737.124op/s; 21551608.453op/s] or [-0.048%; +0.048%] None None None

Group 18

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.576ms 3.609ms ± 0.021ms 3.608ms ± 0.015ms 3.623ms 3.649ms 3.662ms 3.679ms 1.98% 0.692 0.114 0.57% 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.607ms; 3.612ms] or [-0.080%; +0.080%] None None None

Group 19

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.968µs 5.038µs ± 0.044µs 5.045µs ± 0.042µs 5.074µs 5.107µs 5.110µs 5.112µs 1.33% 0.075 -1.476 0.86% 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.032µs; 5.045µs] or [-0.120%; +0.120%] None None None

Group 20

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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.283µs 5.355µs ± 0.031µs 5.354µs ± 0.020µs 5.373µs 5.404µs 5.447µs 5.462µs 2.02% 0.591 0.548 0.59% 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.350µs; 5.359µs] or [-0.081%; +0.081%] None None None

Group 21

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 407c70b 1774514727 r1viollet/fix_certificate_issue
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 13.061ms 13.093ms ± 0.014ms 13.091ms ± 0.008ms 13.100ms 13.120ms 13.128ms 13.155ms 0.49% 0.898 1.924 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.091ms; 13.094ms] or [-0.015%; +0.015%] None None None

Baseline

Omitted due to size.

@dd-octo-sts

dd-octo-sts Bot commented Mar 25, 2026

Copy link
Copy Markdown
Contributor

Artifact Size Benchmark Report

aarch64-alpine-linux-musl
Artifact Baseline Commit Change
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 101.44 MB 101.44 MB +0% (+8.35 KB) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.so 8.70 MB 8.70 MB 0% (0 B) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 118.22 MB 118.23 MB +.01% (+12.46 KB) 🔍
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.29 MB 11.29 MB +0% (+400 B) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 27.26 MB 27.26 MB +.02% (+6.00 KB) 🔍
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 80.34 KB 80.34 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 186.51 MB 186.53 MB +.01% (+24.00 KB) 🔍
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 921.92 MB 921.86 MB -0% (-62.24 KB) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 8.99 MB 9.00 MB +.01% (+1.50 KB) 🔍
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 80.34 KB 80.34 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 26.83 MB 26.83 MB +.02% (+8.00 KB) 🔍
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 61.00 MB 61.00 MB +0% (+4.96 KB) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 23.08 MB 23.08 MB +.01% (+3.00 KB) 🔍
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 81.59 KB 81.59 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 190.74 MB 190.78 MB +.02% (+40.00 KB) 🔍
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 905.45 MB 905.47 MB +0% (+27.05 KB) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 6.86 MB 6.86 MB +.01% (+1.00 KB) 🔍
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 81.59 KB 81.59 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 28.94 MB 28.94 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 57.39 MB 57.40 MB +0% (+4.97 KB) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 88.30 MB 88.31 MB +0% (+8.64 KB) 👌
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 10.28 MB 10.28 MB 0% (0 B) 👌
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 110.97 MB 110.98 MB +0% (+9.39 KB) 👌
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 12.02 MB 12.02 MB +0% (+280 B) 👌

Since 9a61cae (perf(profiling): cache TLS in ProfileExporter::new,
2026-02-27), TLS configuration is initialized unconditionally in
ProfileExporter::new(), even when the endpoint uses plain HTTP (e.g.
agent mode at http://<host>:8126), unix sockets, or named pipes.

There are two layers to the problem:
1. Our cached_tls_config() calls rustls-platform-verifier which eagerly
   loads the system CA store on Linux.
2. Even without our call, reqwest::ClientBuilder::build() also attempts
   to initialize its own TLS backend (loading system certs) unless a
   preconfigured TLS config is provided.

Both fail with the same error in minimal container images (e.g. bare
ubuntu:20.04 without the ca-certificates package):

  failed to initialize TLS configuration: unexpected error:
  No CA certificates were loaded from the system

This surfaced in ddprof after the libdatadog v29 upgrade: the profiler
targets the Datadog agent over HTTP and has no reason to touch the cert
store at all.

Fix:
- For HTTPS endpoints, use the existing cached platform TLS config
  (loads system CA certs via rustls-platform-verifier).
- For all other schemes (http, unix, windows, file), provide reqwest
  with a minimal TLS config that has an empty root store. This prevents
  reqwest from loading system certs itself, while still giving it a
  valid TLS backend. TLS is never negotiated on these transports anyway.

Verified with a Docker repro: ubuntu:22.04 after
`dpkg --force-depends --purge ca-certificates`, all 5 exporter_e2e
tests pass with the fix and fail without it.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
@r1viollet
r1viollet force-pushed the r1viollet/fix_certificate_issue branch from 0677e7c to 53a7adb Compare March 25, 2026 17:41
Adds a CI job that runs the exporter_e2e tests inside a container with
no CA certificates, reproducing the environment (bare ubuntu:20.04) that
exposed the regression from 9a61cae.

The job follows the same pattern as cross-centos7: mount the runner's
Rust toolchain and pre-fetched cargo cache so the container needs no
network access, then run the tests in an environment that would have
caught the bug. Docker image layers are cached via GitHub Actions cache.

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
@r1viollet
r1viollet force-pushed the r1viollet/fix_certificate_issue branch from 0e8ee01 to 407c70b Compare March 26, 2026 08:46
@r1viollet
r1viollet marked this pull request as ready for review March 26, 2026 08:55
@r1viollet
r1viollet requested review from a team as code owners March 26, 2026 08:55
@r1viollet r1viollet added the profiling Relates to the profiling* modules. label Mar 26, 2026
@r1viollet

Copy link
Copy Markdown
Contributor Author

I did not add junit visibility to this test, is this required ?

gh-worker-dd-mergequeue-cf854d Bot pushed a commit that referenced this pull request Mar 26, 2026
# What does this PR do?

test_crash_tracking_bin_sigchld_exec deadlocks on CentOS 7, causing nextest runs to hang for 50+ minutes. Mark it #[ignore] to unblock CI, and add a 60s nextest timeout as a safety net for --include-ignored runs.

# Motivation

Allow following [PR](#1796) to pass
Job was stuck [here](https://github.com/DataDog/libdatadog/actions/runs/23585387299/job/68677153999?pr=1796)

# Additional Notes

  - Normal CI run: the test is #[ignore] so it's skipped entirely — the timeout never triggers                                                                                                              
  - If someone runs with --include-ignored: after 60s nextest sends SIGTERM (then SIGKILL after a grace period) and reports the test as TIMEOUT — which is a failure                                        

# How to test the change?

CI

Co-authored-by: erwan.viollet <[email protected]>

@morrisonlevi morrisonlevi left a comment

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.

This works in PHP and fixes the issue when no root CA is available.

@r1viollet

Copy link
Copy Markdown
Contributor Author

/merge

@gh-worker-devflow-routing-ef8351

gh-worker-devflow-routing-ef8351 Bot commented Mar 26, 2026

Copy link
Copy Markdown

View all feedbacks in Devflow UI.

2026-03-26 15:51:26 UTC ℹ️ Start processing command /merge


2026-03-26 15:51:31 UTC ℹ️ MergeQueue: pull request added to the queue

The expected merge time in main is approximately 45m (p90).


2026-03-26 16:29:16 UTC 🚨 MergeQueue: This merge request is in error

mergequeue build completed successfully, but the github api returned an error while merging the pr.
GitHub returned an error during the merge attempt. This is a known issue that can often be resolved by retrying the merge request in an hour.

Details

Error: PUT https://api.github.com/repos/DataDog/libdatadog/pulls/1796/merge: 405 Merge already in progress [] (Request ID: 9254:2C08FF:FA0C80:4041351:69C55ED2)

FullStacktrace:
activity error (type: github.GithubService_MergePullRequest, scheduledEventID: 50, startedEventID: 51, identity: 1@github-worker-64f9f8df75-lb5df@): PUT https://api.github.com/repos/DataDog/libdatadog/pulls/1796/merge: 405 Merge already in progress [] (Request ID: 9254:2C08FF:FA0C80:4041351:69C55ED2) (type: GitFailure, retryable: false): PUT https://api.github.com/repos/DataDog/libdatadog/pulls/1796/merge: 405 Merge already in progress [] (type: ErrorResponse, retryable: true)

@r1viollet

Copy link
Copy Markdown
Contributor Author

/merge

@gh-worker-devflow-routing-ef8351

gh-worker-devflow-routing-ef8351 Bot commented Mar 26, 2026

Copy link
Copy Markdown

View all feedbacks in Devflow UI.

2026-03-26 16:30:09 UTC ℹ️ Start processing command /merge


2026-03-26 16:30:14 UTC ℹ️ MergeQueue: pull request added to the queue

The expected merge time in main is approximately 45m (p90).


2026-03-26 17:08:21 UTC ℹ️ MergeQueue: This merge request was merged

@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854d Bot merged commit 54cdf99 into main Mar 26, 2026
166 of 170 checks passed
@gh-worker-dd-mergequeue-cf854d
gh-worker-dd-mergequeue-cf854d Bot deleted the r1viollet/fix_certificate_issue branch March 26, 2026 17:08
rachelyangdog pushed a commit that referenced this pull request Mar 26, 2026
# What does this PR do?

Since 9a61cae (perf(profiling): cache TLS in ProfileExporter::new, 2026-02-27), TLS configuration is initialized unconditionally in ProfileExporter::new(), even when the endpoint uses plain HTTP (e.g. agent mode at http://<host>:8126), unix sockets, or named pipes.

On Linux this eagerly loads the system CA certificate store via rustls-platform-verifier. In minimal container images (e.g. a bare ubuntu:20.04 without the ca-certificates package), there are no certs to load, so the call fails with:

  failed to initialize TLS configuration: unexpected error:
  No CA certificates were loaded from the system

This surfaced in ddprof after the libdatadog v29 upgrade: the profiler targets the Datadog agent over HTTP and has no reason to touch the cert store at all.

Fix: only call cached_tls_config() and apply tls_backend_preconfigured() when the endpoint scheme is "https". All other schemes (http, unix, windows, file) bypass TLS initialization entirely.

# Motivation

Avoid the following error:
```
Failure creating exporter - ddog_prof_Exporter_new failed: failed to initialize TLS configuration: unexpected error: No CA certificates were loaded from the system
```

# Additional Notes

NA

# How to test the change?

We need a docker container that has no certificates.
Possibly ubuntu 20


Co-authored-by: erwan.viollet <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-build mergequeue-status: done profiling Relates to the profiling* modules.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants