Skip to content

refactor(statsd)!: make client clonable#2222

Open
VianneyRuhlmann wants to merge 1 commit into
mainfrom
vianney/statsd-client-refactor
Open

refactor(statsd)!: make client clonable#2222
VianneyRuhlmann wants to merge 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

Comparing clippy allow annotations between branches:

  • Base Branch: origin/main
  • PR Branch: origin/vianney/statsd-client-refactor

Summary by Rule

Rule Base Branch PR Branch Change
expect_used 2 2 No change (0%)
unwrap_used 9 8 ✅ -1 (-11.1%)
Total 11 10 ✅ -1 (-9.1%)

Annotation Counts by File

File Base Branch PR Branch Change
datadog-sidecar/src/service/session_info.rs 1 1 No change (0%)
datadog-sidecar/src/service/sidecar_server.rs 6 6 No change (0%)
libdd-data-pipeline/src/trace_exporter/mod.rs 2 2 No change (0%)
libdd-dogstatsd-client/src/lib.rs 1 0 ✅ -1 (-100.0%)
libdd-trace-stats/src/stats_exporter.rs 1 1 No change (0%)

Annotation Stats by Crate

Crate Base Branch PR Branch Change
clippy-annotation-reporter 5 5 No change (0%)
datadog-ffe-ffi 1 1 No change (0%)
datadog-ipc 22 22 No change (0%)
datadog-live-debugger 4 4 No change (0%)
datadog-live-debugger-ffi 10 10 No change (0%)
datadog-profiling-replayer 4 4 No change (0%)
datadog-sidecar 45 45 No change (0%)
libdd-common 13 13 No change (0%)
libdd-common-ffi 12 12 No change (0%)
libdd-data-pipeline 6 6 No change (0%)
libdd-ddsketch 2 2 No change (0%)
libdd-dogstatsd-client 1 0 ✅ -1 (-100.0%)
libdd-profiling 13 13 No change (0%)
libdd-remote-config 3 3 No change (0%)
libdd-telemetry 20 20 No change (0%)
libdd-tinybytes 4 4 No change (0%)
libdd-trace-normalization 2 2 No change (0%)
libdd-trace-obfuscation 3 3 No change (0%)
libdd-trace-stats 1 1 No change (0%)
libdd-trace-utils 11 11 No change (0%)
Total 182 181 ✅ -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

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

📚 Documentation Check Results

⚠️ 5031 documentation warning(s) found

📦 datadog-sidecar - 2796 warning(s)

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

📦 libdd-dogstatsd-client - 169 warning(s)

📦 libdd-trace-stats - 863 warning(s)


Updated: 2026-07-13 12:19:21 UTC | Commit: 3cdcaa3 | missing-docs job results

@github-actions

github-actions Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

🔒 Cargo Deny Results

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

📦 datadog-sidecar - 4 error(s)

Show output
error[unmaintained]: Bincode is unmaintained
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:37:1
   │
37 │ bincode 1.3.3 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unmaintained advisory detected
   │
   ├ ID: RUSTSEC-2025-0141
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2025-0141
   ├ Due to a doxxing and harassment incident, the bincode team has taken the decision to cease development permanently.
     
     The team considers version 1.3.3 a complete version of bincode that is not in need of any updates.
     
     ## Alternatives to consider
     
     * [wincode](https://crates.io/crates/wincode)
     * [postcard](https://crates.io/crates/postcard)
     * [bitcode](https://crates.io/crates/bitcode)
     * [rkyv](https://crates.io/crates/rkyv)
   ├ Announcement: https://git.sr.ht/~stygianentity/bincode/tree/v3.0/item/README.md
   ├ Solution: No safe upgrade is available!
   ├ bincode v1.3.3
     ├── datadog-ipc v0.1.0
     │   └── datadog-sidecar v0.0.1
     └── datadog-sidecar v0.0.1 (*)

error[vulnerability]: Invalid pointer dereference in `fmt::Pointer` impl for `Atomic` and `Shared` when the underlying pointer is invalid
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:90:1
   │
90 │ crossbeam-epoch 0.9.18 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0204
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0204
   ├ Affected versions of `fmt::Display` dereference the underlying pointer. This causes a invalid pointer dereference e.g., when a pointer created with `Atomic::null` or `Shared::null`. `fmt::Debug` impls and pre-0.9 `fmt::Display` impls, which do not dereference pointers, are not affected by this issue.
   ├ Announcement: https://github.com/crossbeam-rs/crossbeam/pull/1276
   ├ Solution: Upgrade to >=0.9.20 (try `cargo update -p crossbeam-epoch`)
   ├ crossbeam-epoch v0.9.18
     └── crossbeam-deque v0.8.5
         └── rayon-core v1.12.1
             └── rayon v1.10.0
                 └── criterion v0.5.1
                     ├── (dev) datadog-ipc v0.1.0
                     │   └── datadog-sidecar v0.0.1
                     ├── libdd-common v5.1.0
                     │   ├── datadog-ffe v1.0.0
                     │   │   └── datadog-sidecar v0.0.1 (*)
                     │   ├── datadog-ipc v0.1.0 (*)
                     │   ├── datadog-live-debugger v0.0.1
                     │   │   └── datadog-sidecar v0.0.1 (*)
                     │   ├── datadog-sidecar v0.0.1 (*)
                     │   ├── libdd-capabilities-impl v3.0.0
                     │   │   ├── datadog-sidecar v0.0.1 (*)
                     │   │   ├── libdd-data-pipeline v7.0.0
                     │   │   │   ├── datadog-live-debugger v0.0.1 (*)
                     │   │   │   └── datadog-sidecar v0.0.1 (*)
                     │   │   ├── libdd-shared-runtime v2.0.0
                     │   │   │   ├── libdd-data-pipeline v7.0.0 (*)
                     │   │   │   ├── libdd-telemetry v6.0.0
                     │   │   │   │   ├── datadog-sidecar v0.0.1 (*)
                     │   │   │   │   ├── libdd-crashtracker v1.0.0
                     │   │   │   │   │   ├── datadog-sidecar v0.0.1 (*)
                     │   │   │   │   │   └── libdd-crashtracker-ffi v37.0.0
                     │   │   │   │   │       └── datadog-sidecar v0.0.1 (*)
                     │   │   │   │   ├── libdd-data-pipeline v7.0.0 (*)
                     │   │   │   │   └── libdd-trace-stats v6.0.0
                     │   │   │   │       ├── datadog-ipc v0.1.0 (*)
                     │   │   │   │       ├── datadog-sidecar v0.0.1 (*)
                     │   │   │   │       └── libdd-data-pipeline v7.0.0 (*)
                     │   │   │   └── libdd-trace-stats v6.0.0 (*)
                     │   │   ├── libdd-trace-stats v6.0.0 (*)
                     │   │   └── libdd-trace-utils v9.0.0
                     │   │       ├── (dev) datadog-sidecar v0.0.1 (*)
                     │   │       ├── libdd-data-pipeline v7.0.0 (*)
                     │   │       ├── libdd-trace-obfuscation v5.0.0
                     │   │       │   └── libdd-trace-stats v6.0.0 (*)
                     │   │       ├── libdd-trace-stats v6.0.0 (*)
                     │   │       └── (dev) libdd-trace-utils v9.0.0 (*)
                     │   ├── libdd-common-ffi v37.0.0
                     │   │   ├── datadog-sidecar v0.0.1 (*)
                     │   │   └── libdd-crashtracker-ffi v37.0.0 (*)
                     │   ├── (build) libdd-crashtracker v1.0.0 (*)
                     │   ├── libdd-crashtracker-ffi v37.0.0 (*)
                     │   ├── libdd-data-pipeline v7.0.0 (*)
                     │   ├── libdd-dogstatsd-client v4.0.0
                     │   │   ├── datadog-sidecar v0.0.1 (*)
                     │   │   ├── libdd-data-pipeline v7.0.0 (*)
                     │   │   └── libdd-trace-stats v6.0.0 (*)
                     │   ├── libdd-remote-config v2.0.0
                     │   │   ├── datadog-ffe v1.0.0 (*)
                     │   │   ├── datadog-live-debugger v0.0.1 (*)
                     │   │   ├── (dev) datadog-sidecar v0.0.1 (*)
                     │   │   └── (dev) libdd-remote-config v2.0.0 (*)
                     │   ├── libdd-shared-runtime v2.0.0 (*)
                     │   ├── libdd-telemetry v6.0.0 (*)
                     │   ├── libdd-trace-obfuscation v5.0.0 (*)
                     │   ├── libdd-trace-stats v6.0.0 (*)
                     │   └── libdd-trace-utils v9.0.0 (*)
                     ├── (dev) libdd-crashtracker v1.0.0 (*)
                     ├── (dev) libdd-data-pipeline v7.0.0 (*)
                     ├── (dev) libdd-ddsketch v1.1.0
                     │   ├── datadog-ipc v0.1.0 (*)
                     │   ├── libdd-data-pipeline v7.0.0 (*)
                     │   ├── libdd-telemetry v6.0.0 (*)
                     │   └── libdd-trace-stats v6.0.0 (*)
                     ├── (dev) libdd-trace-normalization v3.0.0
                     │   ├── libdd-data-pipeline v7.0.0 (*)
                     │   └── libdd-trace-utils v9.0.0 (*)
                     ├── (dev) libdd-trace-obfuscation v5.0.0 (*)
                     ├── (dev) libdd-trace-stats v6.0.0 (*)
                     └── (dev) libdd-trace-utils v9.0.0 (*)

error[unsound]: Rand is unsound with a custom logger using `rand::rng()`
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:302:1
    │
302 │ rand 0.8.5 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unsound advisory detected
    │
    ├ ID: RUSTSEC-2026-0097
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0097
    ├ It has been reported (by @lopopolo) that the `rand` library is [unsound](https://rust-lang.github.io/unsafe-code-guidelines/glossary.html#soundness-of-code--of-a-library) (i.e. that safe code using the public API can cause Undefined Behaviour) when all the following conditions are met:
      
      - The `log` and `thread_rng` features are enabled
      - A [custom logger](https://docs.rs/log/latest/log/#implementing-a-logger) is defined
      - The custom logger accesses `rand::rng()` (previously `rand::thread_rng()`) and calls any `TryRng` (previously `RngCore`) methods on `ThreadRng`
      - The `ThreadRng` (attempts to) reseed while called from the custom logger (this happens every 64 kB of generated data)
      - Trace-level logging is enabled or warn-level logging is enabled and the random source (the `getrandom` crate) is unable to provide a new seed
      
      `TryRng` (previously `RngCore`) methods for `ThreadRng` use `unsafe` code to cast `*mut BlockRng<ReseedingCore>` to `&mut BlockRng<ReseedingCore>`. When all the above conditions are met this results in an aliased mutable reference, violating the Stacked Borrows rules. Miri is able to detect this violation in sample code. Since construction of [aliased mutable references is Undefined Behaviour](https://doc.rust-lang.org/stable/nomicon/references.html), the behaviour of optimized builds is hard to predict.
    ├ Announcement: https://github.com/rust-random/rand/pull/1763
    ├ Solution: Upgrade to >=0.10.1 OR <0.10.0, >=0.9.3 OR <0.9.0, >=0.8.6 (try `cargo update -p rand`)
    ├ rand v0.8.5
      ├── datadog-sidecar v0.0.1
      ├── libdd-common v5.1.0
      │   ├── datadog-ffe v1.0.0
      │   │   └── datadog-sidecar v0.0.1 (*)
      │   ├── datadog-ipc v0.1.0
      │   │   └── datadog-sidecar v0.0.1 (*)
      │   ├── datadog-live-debugger v0.0.1
      │   │   └── datadog-sidecar v0.0.1 (*)
      │   ├── datadog-sidecar v0.0.1 (*)
      │   ├── libdd-capabilities-impl v3.0.0
      │   │   ├── datadog-sidecar v0.0.1 (*)
      │   │   ├── libdd-data-pipeline v7.0.0
      │   │   │   ├── datadog-live-debugger v0.0.1 (*)
      │   │   │   └── datadog-sidecar v0.0.1 (*)
      │   │   ├── libdd-shared-runtime v2.0.0
      │   │   │   ├── libdd-data-pipeline v7.0.0 (*)
      │   │   │   ├── libdd-telemetry v6.0.0
      │   │   │   │   ├── datadog-sidecar v0.0.1 (*)
      │   │   │   │   ├── libdd-crashtracker v1.0.0
      │   │   │   │   │   ├── datadog-sidecar v0.0.1 (*)
      │   │   │   │   │   └── libdd-crashtracker-ffi v37.0.0
      │   │   │   │   │       └── datadog-sidecar v0.0.1 (*)
      │   │   │   │   ├── libdd-data-pipeline v7.0.0 (*)
      │   │   │   │   └── libdd-trace-stats v6.0.0
      │   │   │   │       ├── datadog-ipc v0.1.0 (*)
      │   │   │   │       ├── datadog-sidecar v0.0.1 (*)
      │   │   │   │       └── libdd-data-pipeline v7.0.0 (*)
      │   │   │   └── libdd-trace-stats v6.0.0 (*)
      │   │   ├── libdd-trace-stats v6.0.0 (*)
      │   │   └── libdd-trace-utils v9.0.0
      │   │       ├── (dev) datadog-sidecar v0.0.1 (*)
      │   │       ├── libdd-data-pipeline v7.0.0 (*)
      │   │       ├── libdd-trace-obfuscation v5.0.0
      │   │       │   └── libdd-trace-stats v6.0.0 (*)
      │   │       ├── libdd-trace-stats v6.0.0 (*)
      │   │       └── (dev) libdd-trace-utils v9.0.0 (*)
      │   ├── libdd-common-ffi v37.0.0
      │   │   ├── datadog-sidecar v0.0.1 (*)
      │   │   └── libdd-crashtracker-ffi v37.0.0 (*)
      │   ├── (build) libdd-crashtracker v1.0.0 (*)
      │   ├── libdd-crashtracker-ffi v37.0.0 (*)
      │   ├── libdd-data-pipeline v7.0.0 (*)
      │   ├── libdd-dogstatsd-client v4.0.0
      │   │   ├── datadog-sidecar v0.0.1 (*)
      │   │   ├── libdd-data-pipeline v7.0.0 (*)
      │   │   └── libdd-trace-stats v6.0.0 (*)
      │   ├── libdd-remote-config v2.0.0
      │   │   ├── datadog-ffe v1.0.0 (*)
      │   │   ├── datadog-live-debugger v0.0.1 (*)
      │   │   ├── (dev) datadog-sidecar v0.0.1 (*)
      │   │   └── (dev) libdd-remote-config v2.0.0 (*)
      │   ├── libdd-shared-runtime v2.0.0 (*)
      │   ├── libdd-telemetry v6.0.0 (*)
      │   ├── libdd-trace-obfuscation v5.0.0 (*)
      │   ├── libdd-trace-stats v6.0.0 (*)
      │   └── libdd-trace-utils v9.0.0 (*)
      ├── libdd-crashtracker v1.0.0 (*)
      ├── (dev) libdd-data-pipeline v7.0.0 (*)
      ├── (dev) libdd-ddsketch v1.1.0
      │   ├── datadog-ipc v0.1.0 (*)
      │   ├── libdd-data-pipeline v7.0.0 (*)
      │   ├── libdd-telemetry v6.0.0 (*)
      │   └── libdd-trace-stats v6.0.0 (*)
      ├── (dev) libdd-trace-normalization v3.0.0
      │   ├── libdd-data-pipeline v7.0.0 (*)
      │   └── libdd-trace-utils v9.0.0 (*)
      ├── (dev) libdd-trace-stats v6.0.0 (*)
      ├── libdd-trace-utils v9.0.0 (*)
      └── proptest v1.5.0
          └── (dev) libdd-tinybytes v1.1.1
              ├── datadog-ipc v0.1.0 (*)
              ├── datadog-sidecar v0.0.1 (*)
              ├── libdd-data-pipeline v7.0.0 (*)
              ├── (dev) libdd-tinybytes v1.1.1 (*)
              └── libdd-trace-utils v9.0.0 (*)

error[vulnerability]: Denial of Service via Stack Exhaustion
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:395:1
    │
395 │ 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
      ├── libdd-remote-config v2.0.0
      │   ├── datadog-ffe v1.0.0
      │   │   └── datadog-sidecar v0.0.1
      │   ├── datadog-live-debugger v0.0.1
      │   │   └── datadog-sidecar v0.0.1 (*)
      │   ├── (dev) datadog-sidecar v0.0.1 (*)
      │   └── (dev) libdd-remote-config v2.0.0 (*)
      └── tracing-appender v0.2.3
          └── libdd-log v1.0.0
              └── (dev) libdd-data-pipeline v7.0.0
                  ├── datadog-live-debugger v0.0.1 (*)
                  └── datadog-sidecar v0.0.1 (*)

advisories FAILED, bans ok, sources ok

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

Show output
error[vulnerability]: Invalid pointer dereference in `fmt::Pointer` impl for `Atomic` and `Shared` when the underlying pointer is invalid
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:75:1
   │
75 │ crossbeam-epoch 0.9.18 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0204
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0204
   ├ Affected versions of `fmt::Display` dereference the underlying pointer. This causes a invalid pointer dereference e.g., when a pointer created with `Atomic::null` or `Shared::null`. `fmt::Debug` impls and pre-0.9 `fmt::Display` impls, which do not dereference pointers, are not affected by this issue.
   ├ Announcement: https://github.com/crossbeam-rs/crossbeam/pull/1276
   ├ Solution: Upgrade to >=0.9.20 (try `cargo update -p crossbeam-epoch`)
   ├ crossbeam-epoch v0.9.18
     └── crossbeam-deque v0.8.5
         └── rayon-core v1.12.1
             └── rayon v1.10.0
                 └── criterion v0.5.1
                     ├── libdd-common v5.1.0
                     │   ├── libdd-capabilities-impl v3.0.0
                     │   │   ├── libdd-data-pipeline v7.0.0
                     │   │   ├── libdd-shared-runtime v2.0.0
                     │   │   │   ├── libdd-data-pipeline v7.0.0 (*)
                     │   │   │   ├── libdd-telemetry v6.0.0
                     │   │   │   │   ├── libdd-data-pipeline v7.0.0 (*)
                     │   │   │   │   └── libdd-trace-stats v6.0.0
                     │   │   │   │       └── libdd-data-pipeline v7.0.0 (*)
                     │   │   │   └── libdd-trace-stats v6.0.0 (*)
                     │   │   ├── libdd-trace-stats v6.0.0 (*)
                     │   │   └── libdd-trace-utils v9.0.0
                     │   │       ├── libdd-data-pipeline v7.0.0 (*)
                     │   │       ├── libdd-trace-obfuscation v5.0.0
                     │   │       │   └── libdd-trace-stats v6.0.0 (*)
                     │   │       ├── libdd-trace-stats v6.0.0 (*)
                     │   │       └── (dev) libdd-trace-utils v9.0.0 (*)
                     │   ├── libdd-data-pipeline v7.0.0 (*)
                     │   ├── libdd-dogstatsd-client v4.0.0
                     │   │   ├── libdd-data-pipeline v7.0.0 (*)
                     │   │   └── libdd-trace-stats v6.0.0 (*)
                     │   ├── libdd-shared-runtime v2.0.0 (*)
                     │   ├── libdd-telemetry v6.0.0 (*)
                     │   ├── libdd-trace-obfuscation v5.0.0 (*)
                     │   ├── libdd-trace-stats v6.0.0 (*)
                     │   └── libdd-trace-utils v9.0.0 (*)
                     ├── (dev) libdd-data-pipeline v7.0.0 (*)
                     ├── (dev) libdd-ddsketch v1.1.0
                     │   ├── libdd-data-pipeline v7.0.0 (*)
                     │   ├── libdd-telemetry v6.0.0 (*)
                     │   └── libdd-trace-stats v6.0.0 (*)
                     ├── (dev) libdd-trace-normalization v3.0.0
                     │   ├── libdd-data-pipeline v7.0.0 (*)
                     │   └── libdd-trace-utils v9.0.0 (*)
                     ├── (dev) libdd-trace-obfuscation v5.0.0 (*)
                     ├── (dev) libdd-trace-stats v6.0.0 (*)
                     └── (dev) libdd-trace-utils v9.0.0 (*)

error[unsound]: Rand is unsound with a custom logger using `rand::rng()`
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:218:1
    │
218 │ rand 0.8.5 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unsound advisory detected
    │
    ├ ID: RUSTSEC-2026-0097
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0097
    ├ It has been reported (by @lopopolo) that the `rand` library is [unsound](https://rust-lang.github.io/unsafe-code-guidelines/glossary.html#soundness-of-code--of-a-library) (i.e. that safe code using the public API can cause Undefined Behaviour) when all the following conditions are met:
      
      - The `log` and `thread_rng` features are enabled
      - A [custom logger](https://docs.rs/log/latest/log/#implementing-a-logger) is defined
      - The custom logger accesses `rand::rng()` (previously `rand::thread_rng()`) and calls any `TryRng` (previously `RngCore`) methods on `ThreadRng`
      - The `ThreadRng` (attempts to) reseed while called from the custom logger (this happens every 64 kB of generated data)
      - Trace-level logging is enabled or warn-level logging is enabled and the random source (the `getrandom` crate) is unable to provide a new seed
      
      `TryRng` (previously `RngCore`) methods for `ThreadRng` use `unsafe` code to cast `*mut BlockRng<ReseedingCore>` to `&mut BlockRng<ReseedingCore>`. When all the above conditions are met this results in an aliased mutable reference, violating the Stacked Borrows rules. Miri is able to detect this violation in sample code. Since construction of [aliased mutable references is Undefined Behaviour](https://doc.rust-lang.org/stable/nomicon/references.html), the behaviour of optimized builds is hard to predict.
    ├ Announcement: https://github.com/rust-random/rand/pull/1763
    ├ Solution: Upgrade to >=0.10.1 OR <0.10.0, >=0.9.3 OR <0.9.0, >=0.8.6 (try `cargo update -p rand`)
    ├ rand v0.8.5
      ├── libdd-common v5.1.0
      │   ├── libdd-capabilities-impl v3.0.0
      │   │   ├── libdd-data-pipeline v7.0.0
      │   │   ├── libdd-shared-runtime v2.0.0
      │   │   │   ├── libdd-data-pipeline v7.0.0 (*)
      │   │   │   ├── libdd-telemetry v6.0.0
      │   │   │   │   ├── libdd-data-pipeline v7.0.0 (*)
      │   │   │   │   └── libdd-trace-stats v6.0.0
      │   │   │   │       └── libdd-data-pipeline v7.0.0 (*)
      │   │   │   └── libdd-trace-stats v6.0.0 (*)
      │   │   ├── libdd-trace-stats v6.0.0 (*)
      │   │   └── libdd-trace-utils v9.0.0
      │   │       ├── libdd-data-pipeline v7.0.0 (*)
      │   │       ├── libdd-trace-obfuscation v5.0.0
      │   │       │   └── libdd-trace-stats v6.0.0 (*)
      │   │       ├── libdd-trace-stats v6.0.0 (*)
      │   │       └── (dev) libdd-trace-utils v9.0.0 (*)
      │   ├── libdd-data-pipeline v7.0.0 (*)
      │   ├── libdd-dogstatsd-client v4.0.0
      │   │   ├── libdd-data-pipeline v7.0.0 (*)
      │   │   └── libdd-trace-stats v6.0.0 (*)
      │   ├── libdd-shared-runtime v2.0.0 (*)
      │   ├── libdd-telemetry v6.0.0 (*)
      │   ├── libdd-trace-obfuscation v5.0.0 (*)
      │   ├── libdd-trace-stats v6.0.0 (*)
      │   └── libdd-trace-utils v9.0.0 (*)
      ├── (dev) libdd-data-pipeline v7.0.0 (*)
      ├── (dev) libdd-ddsketch v1.1.0
      │   ├── libdd-data-pipeline v7.0.0 (*)
      │   ├── libdd-telemetry v6.0.0 (*)
      │   └── libdd-trace-stats v6.0.0 (*)
      ├── (dev) libdd-trace-normalization v3.0.0
      │   ├── libdd-data-pipeline v7.0.0 (*)
      │   └── libdd-trace-utils v9.0.0 (*)
      ├── (dev) libdd-trace-stats v6.0.0 (*)
      ├── libdd-trace-utils v9.0.0 (*)
      └── proptest v1.5.0
          └── (dev) libdd-tinybytes v1.1.1
              ├── libdd-data-pipeline v7.0.0 (*)
              ├── (dev) libdd-tinybytes v1.1.1 (*)
              └── libdd-trace-utils v9.0.0 (*)

error[vulnerability]: Denial of Service via Stack Exhaustion
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:287:1
    │
287 │ 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 v7.0.0

advisories FAILED, bans ok, sources ok

📦 libdd-dogstatsd-client - 1 error(s)

Show output
error[unsound]: Rand is unsound with a custom logger using `rand::rng()`
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:70:1
   │
70 │ rand 0.8.5 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unsound advisory detected
   │
   ├ ID: RUSTSEC-2026-0097
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0097
   ├ It has been reported (by @lopopolo) that the `rand` library is [unsound](https://rust-lang.github.io/unsafe-code-guidelines/glossary.html#soundness-of-code--of-a-library) (i.e. that safe code using the public API can cause Undefined Behaviour) when all the following conditions are met:
     
     - The `log` and `thread_rng` features are enabled
     - A [custom logger](https://docs.rs/log/latest/log/#implementing-a-logger) is defined
     - The custom logger accesses `rand::rng()` (previously `rand::thread_rng()`) and calls any `TryRng` (previously `RngCore`) methods on `ThreadRng`
     - The `ThreadRng` (attempts to) reseed while called from the custom logger (this happens every 64 kB of generated data)
     - Trace-level logging is enabled or warn-level logging is enabled and the random source (the `getrandom` crate) is unable to provide a new seed
     
     `TryRng` (previously `RngCore`) methods for `ThreadRng` use `unsafe` code to cast `*mut BlockRng<ReseedingCore>` to `&mut BlockRng<ReseedingCore>`. When all the above conditions are met this results in an aliased mutable reference, violating the Stacked Borrows rules. Miri is able to detect this violation in sample code. Since construction of [aliased mutable references is Undefined Behaviour](https://doc.rust-lang.org/stable/nomicon/references.html), the behaviour of optimized builds is hard to predict.
   ├ Announcement: https://github.com/rust-random/rand/pull/1763
   ├ Solution: Upgrade to >=0.10.1 OR <0.10.0, >=0.9.3 OR <0.9.0, >=0.8.6 (try `cargo update -p rand`)
   ├ rand v0.8.5
     └── (dev) libdd-common v5.1.0
         └── libdd-dogstatsd-client v4.0.0

advisories FAILED, bans ok, sources ok

📦 libdd-trace-stats - 2 error(s)

Show output
error[vulnerability]: Invalid pointer dereference in `fmt::Pointer` impl for `Atomic` and `Shared` when the underlying pointer is invalid
   ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:66:1
   │
66 │ crossbeam-epoch 0.9.18 registry+https://github.com/rust-lang/crates.io-index
   │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ security vulnerability detected
   │
   ├ ID: RUSTSEC-2026-0204
   ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0204
   ├ Affected versions of `fmt::Display` dereference the underlying pointer. This causes a invalid pointer dereference e.g., when a pointer created with `Atomic::null` or `Shared::null`. `fmt::Debug` impls and pre-0.9 `fmt::Display` impls, which do not dereference pointers, are not affected by this issue.
   ├ Announcement: https://github.com/crossbeam-rs/crossbeam/pull/1276
   ├ Solution: Upgrade to >=0.9.20 (try `cargo update -p crossbeam-epoch`)
   ├ crossbeam-epoch v0.9.18
     └── crossbeam-deque v0.8.5
         └── rayon-core v1.12.1
             └── rayon v1.10.0
                 └── criterion v0.5.1
                     ├── libdd-common v5.1.0
                     │   ├── libdd-capabilities-impl v3.0.0
                     │   │   ├── libdd-shared-runtime v2.0.0
                     │   │   │   ├── libdd-telemetry v6.0.0
                     │   │   │   │   └── libdd-trace-stats v6.0.0
                     │   │   │   └── libdd-trace-stats v6.0.0 (*)
                     │   │   ├── libdd-trace-stats v6.0.0 (*)
                     │   │   └── libdd-trace-utils v9.0.0
                     │   │       ├── libdd-trace-obfuscation v5.0.0
                     │   │       │   └── libdd-trace-stats v6.0.0 (*)
                     │   │       ├── libdd-trace-stats v6.0.0 (*)
                     │   │       └── (dev) libdd-trace-utils v9.0.0 (*)
                     │   ├── libdd-dogstatsd-client v4.0.0
                     │   │   └── libdd-trace-stats v6.0.0 (*)
                     │   ├── libdd-shared-runtime v2.0.0 (*)
                     │   ├── libdd-telemetry v6.0.0 (*)
                     │   ├── libdd-trace-obfuscation v5.0.0 (*)
                     │   ├── libdd-trace-stats v6.0.0 (*)
                     │   └── libdd-trace-utils v9.0.0 (*)
                     ├── (dev) libdd-ddsketch v1.1.0
                     │   ├── libdd-telemetry v6.0.0 (*)
                     │   └── libdd-trace-stats v6.0.0 (*)
                     ├── (dev) libdd-trace-normalization v3.0.0
                     │   └── libdd-trace-utils v9.0.0 (*)
                     ├── (dev) libdd-trace-obfuscation v5.0.0 (*)
                     ├── (dev) libdd-trace-stats v6.0.0 (*)
                     └── (dev) libdd-trace-utils v9.0.0 (*)

error[unsound]: Rand is unsound with a custom logger using `rand::rng()`
    ┌─ /home/runner/work/libdatadog/libdatadog/Cargo.lock:198:1
    │
198 │ rand 0.8.5 registry+https://github.com/rust-lang/crates.io-index
    │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ unsound advisory detected
    │
    ├ ID: RUSTSEC-2026-0097
    ├ Advisory: https://rustsec.org/advisories/RUSTSEC-2026-0097
    ├ It has been reported (by @lopopolo) that the `rand` library is [unsound](https://rust-lang.github.io/unsafe-code-guidelines/glossary.html#soundness-of-code--of-a-library) (i.e. that safe code using the public API can cause Undefined Behaviour) when all the following conditions are met:
      
      - The `log` and `thread_rng` features are enabled
      - A [custom logger](https://docs.rs/log/latest/log/#implementing-a-logger) is defined
      - The custom logger accesses `rand::rng()` (previously `rand::thread_rng()`) and calls any `TryRng` (previously `RngCore`) methods on `ThreadRng`
      - The `ThreadRng` (attempts to) reseed while called from the custom logger (this happens every 64 kB of generated data)
      - Trace-level logging is enabled or warn-level logging is enabled and the random source (the `getrandom` crate) is unable to provide a new seed
      
      `TryRng` (previously `RngCore`) methods for `ThreadRng` use `unsafe` code to cast `*mut BlockRng<ReseedingCore>` to `&mut BlockRng<ReseedingCore>`. When all the above conditions are met this results in an aliased mutable reference, violating the Stacked Borrows rules. Miri is able to detect this violation in sample code. Since construction of [aliased mutable references is Undefined Behaviour](https://doc.rust-lang.org/stable/nomicon/references.html), the behaviour of optimized builds is hard to predict.
    ├ Announcement: https://github.com/rust-random/rand/pull/1763
    ├ Solution: Upgrade to >=0.10.1 OR <0.10.0, >=0.9.3 OR <0.9.0, >=0.8.6 (try `cargo update -p rand`)
    ├ rand v0.8.5
      ├── libdd-common v5.1.0
      │   ├── libdd-capabilities-impl v3.0.0
      │   │   ├── libdd-shared-runtime v2.0.0
      │   │   │   ├── libdd-telemetry v6.0.0
      │   │   │   │   └── libdd-trace-stats v6.0.0
      │   │   │   └── libdd-trace-stats v6.0.0 (*)
      │   │   ├── libdd-trace-stats v6.0.0 (*)
      │   │   └── libdd-trace-utils v9.0.0
      │   │       ├── libdd-trace-obfuscation v5.0.0
      │   │       │   └── libdd-trace-stats v6.0.0 (*)
      │   │       ├── libdd-trace-stats v6.0.0 (*)
      │   │       └── (dev) libdd-trace-utils v9.0.0 (*)
      │   ├── libdd-dogstatsd-client v4.0.0
      │   │   └── libdd-trace-stats v6.0.0 (*)
      │   ├── libdd-shared-runtime v2.0.0 (*)
      │   ├── libdd-telemetry v6.0.0 (*)
      │   ├── libdd-trace-obfuscation v5.0.0 (*)
      │   ├── libdd-trace-stats v6.0.0 (*)
      │   └── libdd-trace-utils v9.0.0 (*)
      ├── (dev) libdd-ddsketch v1.1.0
      │   ├── libdd-telemetry v6.0.0 (*)
      │   └── libdd-trace-stats v6.0.0 (*)
      ├── (dev) libdd-trace-normalization v3.0.0
      │   └── libdd-trace-utils v9.0.0 (*)
      ├── (dev) libdd-trace-stats v6.0.0 (*)
      ├── libdd-trace-utils v9.0.0 (*)
      └── proptest v1.5.0
          └── (dev) libdd-tinybytes v1.1.1
              ├── (dev) libdd-tinybytes v1.1.1 (*)
              └── libdd-trace-utils v9.0.0 (*)

advisories FAILED, bans ok, sources ok

Updated: 2026-07-13 12:19:59 UTC | Commit: 3cdcaa3 | dependency-check job results

@datadog-datadog-prod-us1

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

Copy link
Copy Markdown
Contributor

Pipelines  Tests

Fix all issues with BitsAI

⚠️ Warnings

🚦 1 Pipeline job failed

Required checks pass | allchecks   View in Datadog   GitHub Actions

ℹ️ Info

No other issues found (see more)

🧪 All tests passed
❄️ No new flaky tests detected

🎯 Code Coverage (details)
Patch Coverage: 81.57%
Overall Coverage: 74.48% (-0.01%)

Useful? React with 👍 / 👎

This comment will be updated automatically if new data arrives.
🔗 Commit SHA: 395fb45 | 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-13 12:28:40

Comparing candidate commit 395fb45 in PR branch vianney/statsd-client-refactor with baseline commit ade7821 in branch main.

Found 2 performance improvements and 2 performance regressions! Performance is the same for 20 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:trace_buffer/2_senders/no_delay

  • 🟩 execution_time [-44.495µs; -37.569µs] or [-4.791%; -4.045%]
  • 🟩 throughput [+82210.040op/s; +97325.473op/s] or [+4.240%; +5.020%]

scenario:trace_buffer/4_senders/no_delay

  • 🟥 execution_time [+136.509µs; +163.288µs] or [+5.863%; +7.014%]
  • 🟥 throughput [-103418.397op/s; -86047.170op/s] or [-6.680%; -5.558%]

Benchmark execution time: 2026-07-13 12:24:51

Comparing candidate commit 395fb45 in PR branch vianney/statsd-client-refactor with baseline commit ade7821 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 395fb45 1783944961 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.323ms 56.538ms ± 0.123ms 56.519ms ± 0.067ms 56.601ms 56.745ms 56.987ms 57.061ms 0.96% 1.346 3.175 0.22% 0.009ms 1 200
trace_buffer/1_senders/10us_delay throughput 15772.599op/s 15918.558op/s ± 34.555op/s 15923.730op/s ± 18.879op/s 15940.969op/s 15966.412op/s 15973.796op/s 15979.314op/s 0.35% -1.324 3.090 0.22% 2.443op/s 1 200
trace_buffer/1_senders/1us_delay execution_time 50.028ms 50.081ms ± 0.026ms 50.079ms ± 0.011ms 50.089ms 50.130ms 50.174ms 50.184ms 0.21% 1.401 3.669 0.05% 0.002ms 1 200
trace_buffer/1_senders/1us_delay throughput 17933.959op/s 17971.011op/s ± 9.238op/s 17971.434op/s ± 4.054op/s 17976.247op/s 17983.067op/s 17988.557op/s 17990.095op/s 0.10% -1.396 3.650 0.05% 0.653op/s 1 200
trace_buffer/1_senders/no_delay execution_time 333.616µs 339.981µs ± 4.158µs 339.162µs ± 1.710µs 341.108µs 344.880µs 352.725µs 381.350µs 12.44% 5.401 48.188 1.22% 0.294µs 1 200
trace_buffer/1_senders/no_delay throughput 2360036.236op/s 2647576.145op/s ± 30507.009op/s 2653599.191op/s ± 13321.560op/s 2663716.746op/s 2677507.963op/s 2686601.112op/s 2697710.681op/s 1.66% -4.694 38.802 1.15% 2157.171op/s 1 200
trace_buffer/2_senders/10us_delay execution_time 56.689ms 57.125ms ± 0.189ms 57.114ms ± 0.147ms 57.264ms 57.438ms 57.600ms 57.623ms 0.89% 0.232 -0.417 0.33% 0.013ms 1 200
trace_buffer/2_senders/10us_delay throughput 31237.393op/s 31510.002op/s ± 104.080op/s 31515.733op/s ± 81.055op/s 31593.479op/s 31673.519op/s 31718.494op/s 31751.931op/s 0.75% -0.217 -0.429 0.33% 7.360op/s 1 200
trace_buffer/2_senders/1us_delay execution_time 50.057ms 50.112ms ± 0.033ms 50.108ms ± 0.019ms 50.125ms 50.177ms 50.209ms 50.239ms 0.26% 1.168 1.431 0.06% 0.002ms 1 200
trace_buffer/2_senders/1us_delay throughput 35828.947op/s 35919.665op/s ± 23.352op/s 35922.546op/s ± 13.451op/s 35936.225op/s 35948.798op/s 35954.265op/s 35958.678op/s 0.10% -1.164 1.419 0.06% 1.651op/s 1 200
trace_buffer/2_senders/no_delay execution_time 848.940µs 887.682µs ± 18.216µs 887.441µs ± 11.388µs 898.520µs 916.346µs 934.268µs 981.785µs 10.63% 0.841 2.857 2.05% 1.288µs 1 200
trace_buffer/2_senders/no_delay throughput 1833394.411op/s 2028590.143op/s ± 41023.288op/s 2028303.824op/s ± 26025.083op/s 2055483.183op/s 2093199.226op/s 2110006.057op/s 2120290.004op/s 4.54% -0.609 1.880 2.02% 2900.785op/s 1 200
trace_buffer/4_senders/10us_delay execution_time 57.290ms 57.553ms ± 0.111ms 57.552ms ± 0.069ms 57.619ms 57.756ms 57.839ms 57.931ms 0.66% 0.452 0.449 0.19% 0.008ms 1 200
trace_buffer/4_senders/10us_delay throughput 62142.478op/s 62551.369op/s ± 120.954op/s 62552.247op/s ± 75.159op/s 62630.988op/s 62731.726op/s 62805.692op/s 62838.736op/s 0.46% -0.439 0.431 0.19% 8.553op/s 1 200
trace_buffer/4_senders/1us_delay execution_time 50.088ms 50.164ms ± 0.036ms 50.156ms ± 0.015ms 50.174ms 50.237ms 50.290ms 50.303ms 0.29% 1.450 2.510 0.07% 0.003ms 1 200
trace_buffer/4_senders/1us_delay throughput 71566.631op/s 71764.001op/s ± 51.302op/s 71776.648op/s ± 20.814op/s 71793.717op/s 71823.951op/s 71842.280op/s 71874.179op/s 0.14% -1.445 2.493 0.07% 3.628op/s 1 200
trace_buffer/4_senders/no_delay execution_time 2.307ms 2.478ms ± 0.053ms 2.480ms ± 0.033ms 2.515ms 2.562ms 2.584ms 2.596ms 4.67% -0.364 0.142 2.14% 0.004ms 1 200
trace_buffer/4_senders/no_delay throughput 1386897.593op/s 1453401.884op/s ± 31411.232op/s 1451613.740op/s ± 19522.284op/s 1470112.204op/s 1512409.211op/s 1534969.327op/s 1560283.504op/s 7.49% 0.496 0.334 2.16% 2221.110op/s 1 200
trace_buffer/8_senders/10us_delay execution_time 57.613ms 57.889ms ± 0.186ms 57.823ms ± 0.097ms 57.994ms 58.267ms 58.391ms 58.510ms 1.19% 1.031 0.421 0.32% 0.013ms 1 200
trace_buffer/8_senders/10us_delay throughput 123056.660op/s 124377.048op/s ± 398.271op/s 124517.047op/s ± 208.893op/s 124679.261op/s 124830.558op/s 124923.949op/s 124971.671op/s 0.37% -1.019 0.384 0.32% 28.162op/s 1 200
trace_buffer/8_senders/1us_delay execution_time 50.196ms 50.280ms ± 0.051ms 50.267ms ± 0.026ms 50.304ms 50.390ms 50.415ms 50.502ms 0.47% 1.244 1.732 0.10% 0.004ms 1 200
trace_buffer/8_senders/1us_delay throughput 142567.654op/s 143198.468op/s ± 144.307op/s 143235.100op/s ± 72.931op/s 143294.035op/s 143374.712op/s 143390.007op/s 143437.487op/s 0.14% -1.237 1.706 0.10% 10.204op/s 1 200
trace_buffer/8_senders/no_delay execution_time 6.217ms 6.551ms ± 0.105ms 6.565ms ± 0.058ms 6.618ms 6.671ms 6.729ms 7.170ms 9.21% 0.287 5.747 1.60% 0.007ms 1 200
trace_buffer/8_senders/no_delay throughput 1004221.029op/s 1099385.464op/s ± 17597.959op/s 1096683.979op/s ± 9701.248op/s 1107849.476op/s 1129798.003op/s 1149011.873op/s 1158143.597op/s 5.60% 0.046 4.324 1.60% 1244.364op/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.521ms; 56.555ms] or [-0.030%; +0.030%] None None None
trace_buffer/1_senders/10us_delay throughput [15913.770op/s; 15923.347op/s] or [-0.030%; +0.030%] None None None
trace_buffer/1_senders/1us_delay execution_time [50.077ms; 50.084ms] or [-0.007%; +0.007%] None None None
trace_buffer/1_senders/1us_delay throughput [17969.731op/s; 17972.291op/s] or [-0.007%; +0.007%] None None None
trace_buffer/1_senders/no_delay execution_time [339.405µs; 340.557µs] or [-0.170%; +0.170%] None None None
trace_buffer/1_senders/no_delay throughput [2643348.167op/s; 2651804.123op/s] or [-0.160%; +0.160%] None None None
trace_buffer/2_senders/10us_delay execution_time [57.099ms; 57.152ms] or [-0.046%; +0.046%] None None None
trace_buffer/2_senders/10us_delay throughput [31495.578op/s; 31524.427op/s] or [-0.046%; +0.046%] None None None
trace_buffer/2_senders/1us_delay execution_time [50.107ms; 50.116ms] or [-0.009%; +0.009%] None None None
trace_buffer/2_senders/1us_delay throughput [35916.429op/s; 35922.901op/s] or [-0.009%; +0.009%] None None None
trace_buffer/2_senders/no_delay execution_time [885.157µs; 890.207µs] or [-0.284%; +0.284%] None None None
trace_buffer/2_senders/no_delay throughput [2022904.710op/s; 2034275.576op/s] or [-0.280%; +0.280%] None None None
trace_buffer/4_senders/10us_delay execution_time [57.537ms; 57.568ms] or [-0.027%; +0.027%] None None None
trace_buffer/4_senders/10us_delay throughput [62534.606op/s; 62568.132op/s] or [-0.027%; +0.027%] None None None
trace_buffer/4_senders/1us_delay execution_time [50.159ms; 50.169ms] or [-0.010%; +0.010%] None None None
trace_buffer/4_senders/1us_delay throughput [71756.891op/s; 71771.111op/s] or [-0.010%; +0.010%] None None None
trace_buffer/4_senders/no_delay execution_time [2.471ms; 2.485ms] or [-0.297%; +0.297%] None None None
trace_buffer/4_senders/no_delay throughput [1449048.589op/s; 1457755.179op/s] or [-0.300%; +0.300%] None None None
trace_buffer/8_senders/10us_delay execution_time [57.863ms; 57.915ms] or [-0.045%; +0.045%] None None None
trace_buffer/8_senders/10us_delay throughput [124321.852op/s; 124432.245op/s] or [-0.044%; +0.044%] None None None
trace_buffer/8_senders/1us_delay execution_time [50.273ms; 50.287ms] or [-0.014%; +0.014%] None None None
trace_buffer/8_senders/1us_delay throughput [143178.469op/s; 143218.468op/s] or [-0.014%; +0.014%] None None None
trace_buffer/8_senders/no_delay execution_time [6.536ms; 6.565ms] or [-0.222%; +0.222%] None None None
trace_buffer/8_senders/no_delay throughput [1096946.556op/s; 1101824.372op/s] or [-0.222%; +0.222%] None None None

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 395fb45 1783944961 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.035µs 1.049µs ± 0.004µs 1.051µs ± 0.002µs 1.052µs 1.054µs 1.058µs 1.060µs 0.91% -0.814 0.759 0.39% 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.049µs; 1.050µs] or [-0.055%; +0.055%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 395fb45 1783944961 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.185µs 15.662µs ± 0.422µs 15.615µs ± 0.100µs 15.718µs 15.859µs 16.510µs 20.705µs 32.59% 9.230 103.174 2.69% 0.030µ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.604µs; 15.720µs] or [-0.373%; +0.373%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 395fb45 1783944961 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.431ms 8.459ms ± 0.018ms 8.456ms ± 0.013ms 8.471ms 8.491ms 8.498ms 8.525ms 0.82% 0.680 -0.041 0.21% 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.457ms; 8.462ms] or [-0.029%; +0.029%] 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 ade7821 1783728750 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.340ms 56.559ms ± 0.201ms 56.525ms ± 0.076ms 56.601ms 56.815ms 57.546ms 57.565ms 1.84% 3.202 12.655 0.35% 0.014ms 1 200
trace_buffer/1_senders/10us_delay throughput 15634.621op/s 15912.684op/s ± 55.795op/s 15922.285op/s ± 21.441op/s 15943.405op/s 15962.148op/s 15972.390op/s 15974.559op/s 0.33% -3.155 12.356 0.35% 3.945op/s 1 200
trace_buffer/1_senders/1us_delay execution_time 50.030ms 50.086ms ± 0.034ms 50.082ms ± 0.013ms 50.094ms 50.154ms 50.183ms 50.191ms 0.22% 0.988 0.854 0.07% 0.002ms 1 200
trace_buffer/1_senders/1us_delay throughput 17931.653op/s 17969.090op/s ± 12.276op/s 17970.555op/s ± 4.818op/s 17976.138op/s 17986.696op/s 17988.778op/s 17989.204op/s 0.10% -0.984 0.847 0.07% 0.868op/s 1 200
trace_buffer/1_senders/no_delay execution_time 338.352µs 345.652µs ± 4.891µs 345.224µs ± 2.371µs 347.479µs 351.800µs 354.647µs 394.538µs 14.28% 5.172 48.207 1.41% 0.346µs 1 200
trace_buffer/1_senders/no_delay throughput 2281150.573op/s 2604261.551op/s ± 34552.997op/s 2607005.218op/s ± 18008.556op/s 2626599.546op/s 2642781.285op/s 2653613.554op/s 2659949.347op/s 2.03% -4.274 36.598 1.32% 2443.266op/s 1 200
trace_buffer/2_senders/10us_delay execution_time 56.556ms 56.984ms ± 0.186ms 56.962ms ± 0.128ms 57.096ms 57.304ms 57.476ms 57.523ms 0.99% 0.341 -0.085 0.33% 0.013ms 1 200
trace_buffer/2_senders/10us_delay throughput 31291.598op/s 31588.176op/s ± 102.845op/s 31600.189op/s ± 70.755op/s 31653.573op/s 31745.983op/s 31785.239op/s 31827.080op/s 0.72% -0.323 -0.104 0.32% 7.272op/s 1 200
trace_buffer/2_senders/1us_delay execution_time 50.062ms 50.109ms ± 0.027ms 50.107ms ± 0.016ms 50.122ms 50.164ms 50.205ms 50.210ms 0.21% 1.192 2.222 0.05% 0.002ms 1 200
trace_buffer/2_senders/1us_delay throughput 35849.543op/s 35921.490op/s ± 19.294op/s 35923.182op/s ± 11.388op/s 35934.707op/s 35946.918op/s 35951.576op/s 35955.226op/s 0.09% -1.188 2.207 0.05% 1.364op/s 1 200
trace_buffer/2_senders/no_delay execution_time 868.454µs 928.714µs ± 17.105µs 929.295µs ± 9.031µs 938.365µs 951.273µs 966.379µs 1010.926µs 8.78% -0.180 3.716 1.84% 1.210µs 1 200
trace_buffer/2_senders/no_delay throughput 1780545.343op/s 1938822.386op/s ± 35929.265op/s 1936952.920op/s ± 18900.841op/s 1955839.228op/s 1994380.877op/s 2059557.190op/s 2072648.357op/s 7.01% 0.481 3.467 1.85% 2540.583op/s 1 200
trace_buffer/4_senders/10us_delay execution_time 57.075ms 57.391ms ± 0.148ms 57.365ms ± 0.080ms 57.464ms 57.627ms 57.871ms 58.130ms 1.33% 1.168 3.293 0.26% 0.010ms 1 200
trace_buffer/4_senders/10us_delay throughput 61929.711op/s 62728.208op/s ± 161.821op/s 62756.288op/s ± 87.979op/s 62832.627op/s 62960.489op/s 63023.934op/s 63075.166op/s 0.51% -1.138 3.162 0.26% 11.442op/s 1 200
trace_buffer/4_senders/1us_delay execution_time 50.094ms 50.162ms ± 0.031ms 50.158ms ± 0.015ms 50.175ms 50.223ms 50.269ms 50.298ms 0.28% 1.513 3.459 0.06% 0.002ms 1 200
trace_buffer/4_senders/1us_delay throughput 71573.357op/s 71766.808op/s ± 43.957op/s 71773.511op/s ± 20.936op/s 71793.072op/s 71820.827op/s 71831.063op/s 71865.330op/s 0.13% -1.507 3.437 0.06% 3.108op/s 1 200
trace_buffer/4_senders/no_delay execution_time 2.116ms 2.328ms ± 0.081ms 2.333ms ± 0.051ms 2.378ms 2.460ms 2.492ms 2.519ms 8.00% -0.185 0.065 3.46% 0.006ms 1 200
trace_buffer/4_senders/no_delay throughput 1429066.427op/s 1548134.668op/s ± 54231.012op/s 1543373.169op/s ± 33078.386op/s 1579009.466op/s 1641711.838op/s 1696025.720op/s 1701495.130op/s 10.25% 0.401 0.278 3.49% 3834.712op/s 1 200
trace_buffer/8_senders/10us_delay execution_time 57.514ms 57.818ms ± 0.179ms 57.761ms ± 0.088ms 57.888ms 58.158ms 58.288ms 58.552ms 1.37% 1.147 1.147 0.31% 0.013ms 1 200
trace_buffer/8_senders/10us_delay throughput 122968.131op/s 124530.606op/s ± 384.048op/s 124650.956op/s ± 191.179op/s 124800.793op/s 124975.350op/s 125106.032op/s 125186.236op/s 0.43% -1.131 1.086 0.31% 27.156op/s 1 200
trace_buffer/8_senders/1us_delay execution_time 50.196ms 50.292ms ± 0.055ms 50.278ms ± 0.029ms 50.317ms 50.397ms 50.489ms 50.517ms 0.48% 1.384 2.278 0.11% 0.004ms 1 200
trace_buffer/8_senders/1us_delay throughput 142526.611op/s 143163.381op/s ± 157.484op/s 143204.228op/s ± 82.472op/s 143272.456op/s 143341.319op/s 143379.268op/s 143438.621op/s 0.16% -1.376 2.248 0.11% 11.136op/s 1 200
trace_buffer/8_senders/no_delay execution_time 6.180ms 6.648ms ± 0.124ms 6.683ms ± 0.066ms 6.736ms 6.791ms 6.829ms 6.861ms 2.65% -1.184 1.470 1.86% 0.009ms 1 200
trace_buffer/8_senders/no_delay throughput 1049485.016op/s 1083348.406op/s ± 20644.398op/s 1077291.076op/s ± 10591.297op/s 1093090.539op/s 1122429.130op/s 1153139.394op/s 1165043.894op/s 8.15% 1.305 1.924 1.90% 1459.779op/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.587ms] or [-0.049%; +0.049%] None None None
trace_buffer/1_senders/10us_delay throughput [15904.952op/s; 15920.417op/s] or [-0.049%; +0.049%] None None None
trace_buffer/1_senders/1us_delay execution_time [50.081ms; 50.091ms] or [-0.009%; +0.009%] None None None
trace_buffer/1_senders/1us_delay throughput [17967.388op/s; 17970.791op/s] or [-0.009%; +0.009%] None None None
trace_buffer/1_senders/no_delay execution_time [344.974µs; 346.330µs] or [-0.196%; +0.196%] None None None
trace_buffer/1_senders/no_delay throughput [2599472.838op/s; 2609050.264op/s] or [-0.184%; +0.184%] None None None
trace_buffer/2_senders/10us_delay execution_time [56.958ms; 57.010ms] or [-0.045%; +0.045%] None None None
trace_buffer/2_senders/10us_delay throughput [31573.923op/s; 31602.429op/s] or [-0.045%; +0.045%] None None None
trace_buffer/2_senders/1us_delay execution_time [50.106ms; 50.113ms] or [-0.007%; +0.007%] None None None
trace_buffer/2_senders/1us_delay throughput [35918.816op/s; 35924.164op/s] or [-0.007%; +0.007%] None None None
trace_buffer/2_senders/no_delay execution_time [926.343µs; 931.084µs] or [-0.255%; +0.255%] None None None
trace_buffer/2_senders/no_delay throughput [1933842.935op/s; 1943801.837op/s] or [-0.257%; +0.257%] None None None
trace_buffer/4_senders/10us_delay execution_time [57.370ms; 57.411ms] or [-0.036%; +0.036%] None None None
trace_buffer/4_senders/10us_delay throughput [62705.781op/s; 62750.635op/s] or [-0.036%; +0.036%] None None None
trace_buffer/4_senders/1us_delay execution_time [50.158ms; 50.167ms] or [-0.008%; +0.008%] None None None
trace_buffer/4_senders/1us_delay throughput [71760.716op/s; 71772.900op/s] or [-0.008%; +0.008%] None None None
trace_buffer/4_senders/no_delay execution_time [2.317ms; 2.339ms] or [-0.481%; +0.481%] None None None
trace_buffer/4_senders/no_delay throughput [1540618.771op/s; 1555650.564op/s] or [-0.485%; +0.485%] None None None
trace_buffer/8_senders/10us_delay execution_time [57.793ms; 57.842ms] or [-0.043%; +0.043%] None None None
trace_buffer/8_senders/10us_delay throughput [124477.380op/s; 124583.831op/s] or [-0.043%; +0.043%] None None None
trace_buffer/8_senders/1us_delay execution_time [50.285ms; 50.300ms] or [-0.015%; +0.015%] None None None
trace_buffer/8_senders/1us_delay throughput [143141.555op/s; 143185.207op/s] or [-0.015%; +0.015%] None None None
trace_buffer/8_senders/no_delay execution_time [6.631ms; 6.666ms] or [-0.258%; +0.258%] None None None
trace_buffer/8_senders/no_delay throughput [1080487.291op/s; 1086209.521op/s] or [-0.264%; +0.264%] None None None

Group 1

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ade7821 1783728750 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.052µs 1.066µs ± 0.004µs 1.066µs ± 0.002µs 1.068µs 1.073µs 1.075µs 1.075µs 0.77% -0.482 0.489 0.42% 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.065µs; 1.066µs] or [-0.058%; +0.058%] None None None

Group 2

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ade7821 1783728750 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 14.980µs 15.548µs ± 0.172µs 15.530µs ± 0.101µs 15.633µs 15.804µs 16.047µs 16.476µs 6.09% 1.202 4.807 1.11% 0.012µ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.524µs; 15.571µs] or [-0.154%; +0.154%] None None None

Group 3

cpu_model git_commit_sha git_commit_date git_branch
Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz ade7821 1783728750 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.394ms 8.426ms ± 0.017ms 8.421ms ± 0.009ms 8.433ms 8.459ms 8.480ms 8.480ms 0.70% 1.245 1.357 0.20% 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.424ms; 8.428ms] or [-0.028%; +0.028%] 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 7.88 MB 7.88 MB 0% (0 B) 👌
/aarch64-alpine-linux-musl/lib/libdatadog_profiling.a 85.88 MB 85.87 MB -0% (-7.91 KB) 👌
aarch64-unknown-linux-gnu
Artifact Baseline Commit Change
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.a 97.10 MB 97.10 MB -0% (-2.00 KB) 👌
/aarch64-unknown-linux-gnu/lib/libdatadog_profiling.so 10.61 MB 10.61 MB -0% (-104 B) 👌
libdatadog-x64-windows
Artifact Baseline Commit Change
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.dll 25.45 MB 25.44 MB --.02% (-6.50 KB) 💪
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.lib 88.44 KB 88.44 KB 0% (0 B) 👌
/libdatadog-x64-windows/debug/dynamic/datadog_profiling_ffi.pdb 184.55 MB 184.50 MB --.02% (-56.00 KB) 💪
/libdatadog-x64-windows/debug/static/datadog_profiling_ffi.lib 946.77 MB 946.55 MB --.02% (-219.29 KB) 💪
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.dll 8.32 MB 8.32 MB -0% (-512 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.lib 88.44 KB 88.44 KB 0% (0 B) 👌
/libdatadog-x64-windows/release/dynamic/datadog_profiling_ffi.pdb 24.62 MB 24.62 MB 0% (0 B) 👌
/libdatadog-x64-windows/release/static/datadog_profiling_ffi.lib 49.03 MB 49.03 MB -0% (-2.57 KB) 👌
libdatadog-x86-windows
Artifact Baseline Commit Change
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.dll 22.05 MB 22.05 MB --.02% (-5.00 KB) 💪
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.lib 89.82 KB 89.82 KB 0% (0 B) 👌
/libdatadog-x86-windows/debug/dynamic/datadog_profiling_ffi.pdb 188.76 MB 188.68 MB --.04% (-80.00 KB) 💪
/libdatadog-x86-windows/debug/static/datadog_profiling_ffi.lib 935.45 MB 935.25 MB --.02% (-200.81 KB) 💪
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.dll 6.43 MB 6.43 MB +0% (+512 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.lib 89.82 KB 89.82 KB 0% (0 B) 👌
/libdatadog-x86-windows/release/dynamic/datadog_profiling_ffi.pdb 26.43 MB 26.43 MB 0% (0 B) 👌
/libdatadog-x86-windows/release/static/datadog_profiling_ffi.lib 46.66 MB 46.66 MB -0% (-1.21 KB) 👌
x86_64-alpine-linux-musl
Artifact Baseline Commit Change
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.a 76.58 MB 76.57 MB --.01% (-10.86 KB) 💪
/x86_64-alpine-linux-musl/lib/libdatadog_profiling.so 8.78 MB 8.78 MB 0% (0 B) 👌
x86_64-unknown-linux-gnu
Artifact Baseline Commit Change
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.a 92.10 MB 92.10 MB -0% (-7.25 KB) 👌
/x86_64-unknown-linux-gnu/lib/libdatadog_profiling.so 10.69 MB 10.69 MB --.03% (-3.86 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
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