Skip to content

refactor(statsd)!: make client clonable#2222

Merged
gh-worker-dd-mergequeue-cf854d[bot] merged 1 commit into
mainfrom
vianney/statsd-client-refactor
Jul 21, 2026
Merged

refactor(statsd)!: make client clonable#2222
gh-worker-dd-mergequeue-cf854d[bot] merged 1 commit into
mainfrom
vianney/statsd-client-refactor

Conversation

@VianneyRuhlmann

@VianneyRuhlmann VianneyRuhlmann commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

What does this PR do?

Refactor of the dogstatsd client crate.

Main changes are:

  • Separated code in 3 modules, action client and client/sink
  • Renamed Client to DogStatDClient to avoid renames when importing in other crates
  • Move new, create_client and do_send to be method of the DogStatsDClient
  • Replaced Mutex in DogStatsDClient to use a OnceLock and make the client handle clonable

Motivation

I've encountered several issues with the current design when sharing the client with the StatsExporter in #2159 and when adding the SharedRuntime backed client #2224 .

Additional Notes

Anything else we should know when reviewing?

How to test the change?

Describe here in detail how the change can be validated.

VianneyRuhlmann commented Jul 10, 2026

Copy link
Copy Markdown
Contributor Author

@github-actions

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Clippy Allow Annotation Report

Tracked Clippy allow annotations changed vs main: ✅ -1 (11 → 10)

Rule Base PR Δ
unwrap_used 9 8 ✅ -1
By file and crate

By file

File Base PR Δ
libdd-dogstatsd-client/src/lib.rs 1 0 ✅ -1

By crate

Crate Base PR Δ
libdd-dogstatsd-client 1 0 ✅ -1

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. Panic-inducing macros in particular should be avoided. In the future, this report may become a PR-blocking quality gate.

@datadog-datadog-prod-us1

datadog-datadog-prod-us1 Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

Tests

🎉 All green!

🧪 All tests passed
❄️ No new flaky tests detected

🎯 Code Coverage (details)
Patch Coverage: 81.65%
Overall Coverage: 74.50% (-0.05%)

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 0c91d2d | Docs | Datadog PR Page | Give us feedback!

@pr-commenter

pr-commenter Bot commented Jul 10, 2026

Copy link
Copy Markdown

Benchmarks

Comparison

Benchmark execution time: 2026-07-21 12:24:43

Comparing candidate commit 0c91d2d in PR branch vianney/statsd-client-refactor with baseline commit 054402d in branch main.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 24 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 ----------------------------------'

Benchmark execution time: 2026-07-21 12:19:42

Comparing candidate commit 0c91d2d in PR branch vianney/statsd-client-refactor with baseline commit 054402d in branch main.

Found 0 performance improvements and 0 performance regressions! Performance is the same for 3 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 ----------------------------------'

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 0c91d2d 1784635526 vianney/statsd-client-refactor
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
trace_buffer/1_senders/10us_delay execution_time 56.330ms 56.549ms ± 0.118ms 56.535ms ± 0.065ms 56.601ms 56.785ms 56.870ms 57.010ms 0.84% 0.958 1.296 0.21% 0.008ms 1 200
trace_buffer/1_senders/10us_delay throughput 15786.745op/s 15915.557op/s ± 33.052op/s 15919.420op/s ± 18.290op/s 15936.617op/s 15960.018op/s 15974.761op/s 15977.417op/s 0.36% -0.944 1.255 0.21% 2.337op/s 1 200
trace_buffer/1_senders/1us_delay execution_time 50.026ms 50.094ms ± 0.171ms 50.081ms ± 0.011ms 50.089ms 50.138ms 50.201ms 52.463ms 4.76% 13.459 184.249 0.34% 0.012ms 1 200
trace_buffer/1_senders/1us_delay throughput 17154.787op/s 17966.393op/s ± 58.566op/s 17970.709op/s ± 3.800op/s 17975.036op/s 17987.144op/s 17989.008op/s 17990.591op/s 0.11% -13.406 183.265 0.33% 4.141op/s 1 200
trace_buffer/1_senders/no_delay execution_time 330.891µs 339.860µs ± 6.102µs 338.926µs ± 1.874µs 341.290µs 345.684µs 354.395µs 410.818µs 21.21% 8.092 89.970 1.79% 0.431µs 1 200
trace_buffer/1_senders/no_delay throughput 2190750.042op/s 2648895.729op/s ± 41982.843op/s 2655444.042op/s ± 14679.438op/s 2668295.518op/s 2682271.031op/s 2699924.035op/s 2719924.915op/s 2.43% -6.769 69.509 1.58% 2968.635op/s 1 200
trace_buffer/2_senders/10us_delay execution_time 56.802ms 57.248ms ± 0.165ms 57.230ms ± 0.108ms 57.357ms 57.544ms 57.682ms 57.814ms 1.02% 0.445 0.527 0.29% 0.012ms 1 200
trace_buffer/2_senders/10us_delay throughput 31134.073op/s 31442.227op/s ± 90.636op/s 31451.885op/s ± 59.229op/s 31499.825op/s 31569.364op/s 31628.256op/s 31688.863op/s 0.75% -0.425 0.499 0.29% 6.409op/s 1 200
trace_buffer/2_senders/1us_delay execution_time 50.015ms 50.114ms ± 0.035ms 50.109ms ± 0.017ms 50.127ms 50.186ms 50.225ms 50.235ms 0.25% 1.273 2.200 0.07% 0.003ms 1 200
trace_buffer/2_senders/1us_delay throughput 35831.539op/s 35917.897op/s ± 25.344op/s 35921.617op/s ± 12.135op/s 35933.299op/s 35948.414op/s 35954.420op/s 35989.376op/s 0.19% -1.267 2.189 0.07% 1.792op/s 1 200
trace_buffer/2_senders/no_delay execution_time 855.800µs 905.083µs ± 21.399µs 905.547µs ± 10.724µs 915.890µs 930.693µs 935.605µs 1078.663µs 19.12% 2.370 20.287 2.36% 1.513µs 1 200
trace_buffer/2_senders/no_delay throughput 1668731.894op/s 1989824.084op/s ± 45077.707op/s 1987748.663op/s ± 23513.981op/s 2011759.322op/s 2062742.422op/s 2092475.647op/s 2103295.299op/s 5.81% -1.392 11.822 2.26% 3187.475op/s 1 200
trace_buffer/4_senders/10us_delay execution_time 57.154ms 57.513ms ± 0.162ms 57.497ms ± 0.096ms 57.608ms 57.810ms 57.973ms 58.023ms 0.91% 0.720 0.782 0.28% 0.011ms 1 200
trace_buffer/4_senders/10us_delay throughput 62044.856op/s 62594.842op/s ± 176.302op/s 62612.235op/s ± 105.043op/s 62710.511op/s 62836.193op/s 62946.868op/s 62987.757op/s 0.60% -0.700 0.748 0.28% 12.466op/s 1 200
trace_buffer/4_senders/1us_delay execution_time 50.106ms 50.164ms ± 0.032ms 50.160ms ± 0.014ms 50.173ms 50.225ms 50.282ms 50.314ms 0.31% 1.848 4.882 0.06% 0.002ms 1 200
trace_buffer/4_senders/1us_delay throughput 71551.016op/s 71763.931op/s ± 46.100op/s 71770.454op/s ± 19.513op/s 71790.359op/s 71815.098op/s 71837.666op/s 71847.789op/s 0.11% -1.841 4.854 0.06% 3.260op/s 1 200
trace_buffer/4_senders/no_delay execution_time 2.097ms 2.414ms ± 0.089ms 2.419ms ± 0.058ms 2.471ms 2.548ms 2.600ms 2.707ms 11.92% -0.245 0.624 3.67% 0.006ms 1 200
trace_buffer/4_senders/no_delay throughput 1329797.690op/s 1493538.542op/s ± 55693.211op/s 1488248.267op/s ± 35122.025op/s 1527889.101op/s 1585418.108op/s 1639653.272op/s 1716547.002op/s 15.34% 0.536 1.008 3.72% 3938.105op/s 1 200
trace_buffer/8_senders/10us_delay execution_time 57.647ms 58.042ms ± 0.312ms 57.916ms ± 0.163ms 58.265ms 58.562ms 58.819ms 59.792ms 3.24% 1.458 3.837 0.54% 0.022ms 1 200
trace_buffer/8_senders/10us_delay throughput 120416.732op/s 124050.708op/s ± 662.561op/s 124317.313op/s ± 350.691op/s 124573.849op/s 124710.560op/s 124826.926op/s 124898.355op/s 0.47% -1.401 3.435 0.53% 46.850op/s 1 200
trace_buffer/8_senders/1us_delay execution_time 50.196ms 50.299ms ± 0.061ms 50.283ms ± 0.034ms 50.328ms 50.405ms 50.515ms 50.664ms 0.76% 1.921 6.804 0.12% 0.004ms 1 200
trace_buffer/8_senders/1us_delay throughput 142112.005op/s 143145.086op/s ± 172.905op/s 143188.781op/s ± 96.854op/s 143269.016op/s 143329.769op/s 143355.479op/s 143438.470op/s 0.17% -1.902 6.673 0.12% 12.226op/s 1 200
trace_buffer/8_senders/no_delay execution_time 6.301ms 6.634ms ± 0.094ms 6.641ms ± 0.064ms 6.705ms 6.774ms 6.806ms 6.852ms 3.18% -0.538 0.698 1.42% 0.007ms 1 200
trace_buffer/8_senders/no_delay throughput 1050719.546op/s 1085501.650op/s ± 15579.501op/s 1084138.132op/s ± 10362.004op/s 1094604.260op/s 1110360.248op/s 1138172.146op/s 1142656.966op/s 5.40% 0.644 0.954 1.43% 1101.637op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
trace_buffer/1_senders/10us_delay execution_time [56.532ms; 56.565ms] or [-0.029%; +0.029%] None None None
trace_buffer/1_senders/10us_delay throughput [15910.976op/s; 15920.137op/s] or [-0.029%; +0.029%] None None None
trace_buffer/1_senders/1us_delay execution_time [50.070ms; 50.118ms] or [-0.047%; +0.047%] None None None
trace_buffer/1_senders/1us_delay throughput [17958.277op/s; 17974.510op/s] or [-0.045%; +0.045%] None None None
trace_buffer/1_senders/no_delay execution_time [339.014µs; 340.706µs] or [-0.249%; +0.249%] None None None
trace_buffer/1_senders/no_delay throughput [2643077.311op/s; 2654714.147op/s] or [-0.220%; +0.220%] None None None
trace_buffer/2_senders/10us_delay execution_time [57.225ms; 57.271ms] or [-0.040%; +0.040%] None None None
trace_buffer/2_senders/10us_delay throughput [31429.666op/s; 31454.788op/s] or [-0.040%; +0.040%] None None None
trace_buffer/2_senders/1us_delay execution_time [50.109ms; 50.119ms] or [-0.010%; +0.010%] None None None
trace_buffer/2_senders/1us_delay throughput [35914.385op/s; 35921.410op/s] or [-0.010%; +0.010%] None None None
trace_buffer/2_senders/no_delay execution_time [902.117µs; 908.049µs] or [-0.328%; +0.328%] None None None
trace_buffer/2_senders/no_delay throughput [1983576.747op/s; 1996071.420op/s] or [-0.314%; +0.314%] None None None
trace_buffer/4_senders/10us_delay execution_time [57.491ms; 57.536ms] or [-0.039%; +0.039%] None None None
trace_buffer/4_senders/10us_delay throughput [62570.409op/s; 62619.276op/s] or [-0.039%; +0.039%] None None None
trace_buffer/4_senders/1us_delay execution_time [50.160ms; 50.169ms] or [-0.009%; +0.009%] None None None
trace_buffer/4_senders/1us_delay throughput [71757.542op/s; 71770.320op/s] or [-0.009%; +0.009%] None None None
trace_buffer/4_senders/no_delay execution_time [2.401ms; 2.426ms] or [-0.509%; +0.509%] None None None
trace_buffer/4_senders/no_delay throughput [1485819.998op/s; 1501257.085op/s] or [-0.517%; +0.517%] None None None
trace_buffer/8_senders/10us_delay execution_time [57.999ms; 58.086ms] or [-0.075%; +0.075%] None None None
trace_buffer/8_senders/10us_delay throughput [123958.883op/s; 124142.533op/s] or [-0.074%; +0.074%] None None None
trace_buffer/8_senders/1us_delay execution_time [50.290ms; 50.307ms] or [-0.017%; +0.017%] None None None
trace_buffer/8_senders/1us_delay throughput [143121.123op/s; 143169.048op/s] or [-0.017%; +0.017%] None None None
trace_buffer/8_senders/no_delay execution_time [6.621ms; 6.647ms] or [-0.197%; +0.197%] None None None
trace_buffer/8_senders/no_delay throughput [1083342.481op/s; 1087660.819op/s] or [-0.199%; +0.199%] None None None

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0c91d2d 1784635526 vianney/statsd-client-refactor
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.070µs 1.090µs ± 0.006µs 1.091µs ± 0.003µs 1.094µs 1.096µs 1.100µs 1.102µs 1.02% -1.040 1.130 0.51% 0.000µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [1.089µs; 1.091µs] or [-0.071%; +0.071%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0c91d2d 1784635526 vianney/statsd-client-refactor
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 15.113µs 15.633µs ± 0.178µs 15.629µs ± 0.107µs 15.734µs 15.949µs 16.074µs 16.390µs 4.87% 0.459 1.832 1.13% 0.013µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [15.608µs; 15.658µs] or [-0.158%; +0.158%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 0c91d2d 1784635526 vianney/statsd-client-refactor
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 8.435ms 8.463ms ± 0.018ms 8.458ms ± 0.011ms 8.473ms 8.494ms 8.513ms 8.541ms 0.99% 1.191 1.817 0.22% 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 [8.460ms; 8.466ms] or [-0.030%; +0.030%] None None None

Baseline

Baseline benchmark details

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 054402d 1784633996 main
scenario metric min mean ± sd median ± mad p75 p95 p99 max peak_to_median_ratio skewness kurtosis cv sem runs sample_size
trace_buffer/1_senders/10us_delay execution_time 56.351ms 56.576ms ± 0.135ms 56.563ms ± 0.091ms 56.654ms 56.803ms 56.998ms 57.061ms 0.88% 0.852 0.773 0.24% 0.010ms 1 200
trace_buffer/1_senders/10us_delay throughput 15772.700op/s 15907.856op/s ± 37.847op/s 15911.526op/s ± 25.589op/s 15937.059op/s 15958.105op/s 15961.969op/s 15971.231op/s 0.38% -0.838 0.731 0.24% 2.676op/s 1 200
trace_buffer/1_senders/1us_delay execution_time 50.007ms 50.082ms ± 0.025ms 50.082ms ± 0.008ms 50.088ms 50.133ms 50.149ms 50.204ms 0.24% 1.040 4.312 0.05% 0.002ms 1 200
trace_buffer/1_senders/1us_delay throughput 17926.928op/s 17970.492op/s ± 8.855op/s 17970.464op/s ± 2.925op/s 17974.787op/s 17985.410op/s 17989.922op/s 17997.552op/s 0.15% -1.032 4.290 0.05% 0.626op/s 1 200
trace_buffer/1_senders/no_delay execution_time 332.093µs 339.912µs ± 5.185µs 339.218µs ± 1.727µs 341.024µs 345.233µs 351.153µs 399.946µs 17.90% 7.981 88.357 1.52% 0.367µs 1 200
trace_buffer/1_senders/no_delay throughput 2250303.502op/s 2648290.961op/s ± 36310.243op/s 2653157.384op/s ± 13505.752op/s 2665428.369op/s 2681256.965op/s 2694712.135op/s 2710082.968op/s 2.15% -6.838 70.738 1.37% 2567.522op/s 1 200
trace_buffer/2_senders/10us_delay execution_time 56.951ms 57.355ms ± 0.151ms 57.364ms ± 0.110ms 57.473ms 57.564ms 57.643ms 57.735ms 0.65% -0.354 -0.278 0.26% 0.011ms 1 200
trace_buffer/2_senders/10us_delay throughput 31176.880op/s 31383.950op/s ± 82.751op/s 31378.349op/s ± 59.782op/s 31439.141op/s 31526.835op/s 31597.099op/s 31605.868op/s 0.73% 0.367 -0.267 0.26% 5.851op/s 1 200
trace_buffer/2_senders/1us_delay execution_time 50.060ms 50.111ms ± 0.029ms 50.108ms ± 0.016ms 50.122ms 50.166ms 50.225ms 50.233ms 0.25% 1.486 3.246 0.06% 0.002ms 1 200
trace_buffer/2_senders/1us_delay throughput 35833.359op/s 35920.167op/s ± 21.027op/s 35922.101op/s ± 11.407op/s 35934.892op/s 35945.890op/s 35950.326op/s 35956.828op/s 0.10% -1.481 3.224 0.06% 1.487op/s 1 200
trace_buffer/2_senders/no_delay execution_time 863.340µs 899.700µs ± 15.972µs 899.555µs ± 10.761µs 910.238µs 923.236µs 933.120µs 971.932µs 8.05% 0.341 1.145 1.77% 1.129µs 1 200
trace_buffer/2_senders/no_delay throughput 1851981.013op/s 2001292.244op/s ± 35362.308op/s 2000988.997op/s ± 24110.714op/s 2025414.690op/s 2060382.317op/s 2075720.433op/s 2084925.985op/s 4.19% -0.190 0.719 1.76% 2500.493op/s 1 200
trace_buffer/4_senders/10us_delay execution_time 57.243ms 57.500ms ± 0.114ms 57.492ms ± 0.070ms 57.564ms 57.684ms 57.850ms 57.970ms 0.83% 0.892 2.111 0.20% 0.008ms 1 200
trace_buffer/4_senders/10us_delay throughput 62100.906op/s 62608.624op/s ± 124.410op/s 62617.177op/s ± 76.461op/s 62689.139op/s 62783.148op/s 62880.209op/s 62889.637op/s 0.44% -0.873 2.049 0.20% 8.797op/s 1 200
trace_buffer/4_senders/1us_delay execution_time 50.115ms 50.175ms ± 0.042ms 50.165ms ± 0.020ms 50.187ms 50.268ms 50.291ms 50.321ms 0.31% 1.271 1.022 0.08% 0.003ms 1 200
trace_buffer/4_senders/1us_delay throughput 71540.414op/s 71748.731op/s ± 59.772op/s 71763.332op/s ± 28.586op/s 71788.719op/s 71816.662op/s 71830.831op/s 71834.128op/s 0.10% -1.267 1.012 0.08% 4.227op/s 1 200
trace_buffer/4_senders/no_delay execution_time 2.119ms 2.340ms ± 0.083ms 2.348ms ± 0.056ms 2.397ms 2.482ms 2.509ms 2.606ms 11.00% -0.035 -0.020 3.54% 0.006ms 1 200
trace_buffer/4_senders/no_delay throughput 1381245.146op/s 1540126.376op/s ± 54852.893op/s 1533242.617op/s ± 36911.145op/s 1577369.619op/s 1634453.552op/s 1670254.587op/s 1698726.191op/s 10.79% 0.242 -0.003 3.55% 3878.685op/s 1 200
trace_buffer/8_senders/10us_delay execution_time 57.625ms 57.954ms ± 0.261ms 57.841ms ± 0.112ms 58.121ms 58.505ms 58.610ms 58.719ms 1.52% 1.063 0.018 0.45% 0.018ms 1 200
trace_buffer/8_senders/10us_delay throughput 122617.587op/s 124239.140op/s ± 557.711op/s 124478.121op/s ± 241.840op/s 124658.052op/s 124800.393op/s 124896.409op/s 124946.685op/s 0.38% -1.052 -0.012 0.45% 39.436op/s 1 200
trace_buffer/8_senders/1us_delay execution_time 50.179ms 50.289ms ± 0.075ms 50.276ms ± 0.028ms 50.311ms 50.386ms 50.514ms 51.061ms 1.56% 5.924 55.403 0.15% 0.005ms 1 200
trace_buffer/8_senders/1us_delay throughput 141009.162op/s 143171.389op/s ± 211.078op/s 143210.415op/s ± 78.866op/s 143284.686op/s 143342.112op/s 143402.953op/s 143485.630op/s 0.19% -5.826 53.993 0.15% 14.925op/s 1 200
trace_buffer/8_senders/no_delay execution_time 5.658ms 6.515ms ± 0.150ms 6.542ms ± 0.082ms 6.621ms 6.681ms 6.718ms 6.831ms 4.41% -1.657 5.144 2.30% 0.011ms 1 200
trace_buffer/8_senders/no_delay throughput 1054064.891op/s 1105691.433op/s ± 26597.345op/s 1100551.216op/s ± 13817.584op/s 1116826.572op/s 1152192.797op/s 1184477.084op/s 1272446.606op/s 15.62% 2.007 7.626 2.40% 1880.716op/s 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
trace_buffer/1_senders/10us_delay execution_time [56.557ms; 56.595ms] or [-0.033%; +0.033%] None None None
trace_buffer/1_senders/10us_delay throughput [15902.611op/s; 15913.101op/s] or [-0.033%; +0.033%] None None None
trace_buffer/1_senders/1us_delay execution_time [50.079ms; 50.086ms] or [-0.007%; +0.007%] None None None
trace_buffer/1_senders/1us_delay throughput [17969.265op/s; 17971.719op/s] or [-0.007%; +0.007%] None None None
trace_buffer/1_senders/no_delay execution_time [339.194µs; 340.631µs] or [-0.211%; +0.211%] None None None
trace_buffer/1_senders/no_delay throughput [2643258.710op/s; 2653323.211op/s] or [-0.190%; +0.190%] None None None
trace_buffer/2_senders/10us_delay execution_time [57.334ms; 57.375ms] or [-0.037%; +0.037%] None None None
trace_buffer/2_senders/10us_delay throughput [31372.482op/s; 31395.419op/s] or [-0.037%; +0.037%] None None None
trace_buffer/2_senders/1us_delay execution_time [50.107ms; 50.115ms] or [-0.008%; +0.008%] None None None
trace_buffer/2_senders/1us_delay throughput [35917.253op/s; 35923.081op/s] or [-0.008%; +0.008%] None None None
trace_buffer/2_senders/no_delay execution_time [897.486µs; 901.913µs] or [-0.246%; +0.246%] None None None
trace_buffer/2_senders/no_delay throughput [1996391.368op/s; 2006193.120op/s] or [-0.245%; +0.245%] None None None
trace_buffer/4_senders/10us_delay execution_time [57.484ms; 57.516ms] or [-0.028%; +0.028%] None None None
trace_buffer/4_senders/10us_delay throughput [62591.382op/s; 62625.866op/s] or [-0.028%; +0.028%] None None None
trace_buffer/4_senders/1us_delay execution_time [50.169ms; 50.181ms] or [-0.012%; +0.012%] None None None
trace_buffer/4_senders/1us_delay throughput [71740.447op/s; 71757.014op/s] or [-0.012%; +0.012%] None None None
trace_buffer/4_senders/no_delay execution_time [2.329ms; 2.352ms] or [-0.491%; +0.491%] None None None
trace_buffer/4_senders/no_delay throughput [1532524.293op/s; 1547728.460op/s] or [-0.494%; +0.494%] None None None
trace_buffer/8_senders/10us_delay execution_time [57.918ms; 57.990ms] or [-0.063%; +0.063%] None None None
trace_buffer/8_senders/10us_delay throughput [124161.847op/s; 124316.434op/s] or [-0.062%; +0.062%] None None None
trace_buffer/8_senders/1us_delay execution_time [50.279ms; 50.300ms] or [-0.021%; +0.021%] None None None
trace_buffer/8_senders/1us_delay throughput [143142.136op/s; 143200.643op/s] or [-0.020%; +0.020%] None None None
trace_buffer/8_senders/no_delay execution_time [6.495ms; 6.536ms] or [-0.319%; +0.319%] None None None
trace_buffer/8_senders/no_delay throughput [1102005.297op/s; 1109377.570op/s] or [-0.333%; +0.333%] None None None

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 054402d 1784633996 main
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.067µs 1.084µs ± 0.005µs 1.085µs ± 0.003µs 1.087µs 1.092µs 1.093µs 1.093µs 0.78% -0.491 -0.190 0.49% 0.000µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
write only interface execution_time [1.083µs; 1.085µs] or [-0.068%; +0.068%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 054402d 1784633996 main
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 15.463µs 15.854µs ± 0.188µs 15.821µs ± 0.091µs 15.914µs 16.223µs 16.537µs 16.593µs 4.88% 1.436 2.810 1.18% 0.013µs 1 200
scenario metric 95% CI mean Shapiro-Wilk pvalue Ljung-Box pvalue (lag=1) Dip test pvalue
two way interface execution_time [15.828µs; 15.880µs] or [-0.164%; +0.164%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 054402d 1784633996 main
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 8.428ms 8.456ms ± 0.016ms 8.453ms ± 0.011ms 8.466ms 8.484ms 8.498ms 8.505ms 0.61% 0.611 0.007 0.18% 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 [8.454ms; 8.458ms] or [-0.025%; +0.025%] None None None

@dd-octo-sts

dd-octo-sts Bot commented Jul 10, 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.so 8.13 MB 8.13 MB 0% (0 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 88.04 MB 88.03 MB -0% (-7.85 KB) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 99.32 MB 99.31 MB -0% (-2.77 KB) 👌
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 10.86 MB 10.86 MB -0% (-104 B) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 26.55 MB 26.55 MB --.02% (-6.00 KB) 💪
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 89.18 KB 89.18 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 191.11 MB 191.06 MB --.02% (-48.00 KB) 💪
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 1.04 GB 1.04 GB -0% (-15.17 KB) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 8.65 MB 8.65 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 89.18 KB 89.18 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 25.31 MB 25.31 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 50.49 MB 50.48 MB -0% (-3.26 KB) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 23.13 MB 23.12 MB --.02% (-6.00 KB) 💪
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 90.58 KB 90.58 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 195.79 MB 195.74 MB --.02% (-48.00 KB) 💪
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 1.03 GB 1.03 GB --.02% (-241.70 KB) 💪
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 6.67 MB 6.67 MB --.01% (-1.00 KB) 💪
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 90.58 KB 90.58 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 27.22 MB 27.22 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 48.06 MB 48.06 MB -0% (-2.45 KB) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 78.53 MB 78.52 MB --.01% (-11.59 KB) 💪
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 9.04 MB 9.04 MB --.04% (-4.00 KB) 💪
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 94.02 MB 94.01 MB -0% (-7.99 KB) 👌
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 11.00 MB 11.00 MB --.03% (-3.87 KB) 💪

@VianneyRuhlmann VianneyRuhlmann changed the title refactor(statsd): wrap client in arc refactor(statsd): make client clonable Jul 10, 2026
@VianneyRuhlmann
VianneyRuhlmann force-pushed the vianney/statsd-client-refactor branch 2 times, most recently from b905f96 to 30d94f8 Compare July 10, 2026 14:11
@VianneyRuhlmann
VianneyRuhlmann marked this pull request as ready for review July 10, 2026 14:38
@VianneyRuhlmann
VianneyRuhlmann requested review from a team as code owners July 10, 2026 14:38
@VianneyRuhlmann VianneyRuhlmann changed the title refactor(statsd): make client clonable refactor(statsd)!: make client clonable Jul 10, 2026

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

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 30d94f86f0

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

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

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

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread libdd-dogstatsd-client/src/lib.rs
Comment thread libdd-trace-stats/src/stats_exporter.rs
Comment thread libdd-dogstatsd-client/src/client/mod.rs

@Aaalibaba42 Aaalibaba42 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.

Mostly nits, I don't know dogstatsd enough to approve though, just looked at the code.

Comment thread libdd-dogstatsd-client/src/client/mod.rs
Comment thread libdd-dogstatsd-client/src/client/mod.rs
Comment thread libdd-dogstatsd-client/src/client/mod.rs
Comment thread libdd-dogstatsd-client/src/client/mod.rs
@VianneyRuhlmann
VianneyRuhlmann force-pushed the vianney/statsd-client-refactor branch from 30d94f8 to 395fb45 Compare July 13, 2026 12:16
@VianneyRuhlmann
VianneyRuhlmann force-pushed the vianney/statsd-client-refactor branch from 395fb45 to 0c91d2d Compare July 21, 2026 12:12
@gh-worker-devflow-routing-ef8351

gh-worker-devflow-routing-ef8351 Bot commented Jul 21, 2026

Copy link
Copy Markdown

View all feedbacks in Devflow UI.

2026-07-21 13:36:02 UTC ℹ️ Start processing command devflow:merge


2026-07-21 13:36:07 UTC ℹ️ MergeQueue: pull request added to the queue

The expected merge time in main is approximately 1h (p90).


2026-07-21 14:25:16 UTC ℹ️ MergeQueue: This merge request was merged

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants