Skip to content

feat(datadog-agent-commons): add minimal IPC TLS feature - #2360

Closed
embeaken wants to merge 2 commits into
mainfrom
ilya/datadog-agent-commons-ipc-tls
Closed

feat(datadog-agent-commons): add minimal IPC TLS feature#2360
embeaken wants to merge 2 commits into
mainfrom
ilya/datadog-agent-commons-ipc-tls

Conversation

@embeaken

@embeaken embeaken commented Aug 18, 2026

Copy link
Copy Markdown
Contributor

Summary

Add an ipc-tls feature to datadog-agent-commons so consumers can use the Agent IPC mTLS helpers without pulling the whole dependency graph.

The existing behavior remains the default through a full feature. With default-features = false and features = ["ipc-tls"], the dependency graph is limited to Rustls, saluki-tls, saluki-error, and Tokio.

Change Type

  • Bug fix
  • New feature
  • Non-functional (chore, refactoring, docs)
  • Performance

How did you test this PR?

I integrated this into a feature I'm building to make sure it loads ok and the functionality works as intended. See
DataDog/datadog-agent#54592 (extremely draft PR)

  • make fmt
  • cargo check -p datadog-agent-commons --no-default-features
  • cargo check -p datadog-agent-commons --no-default-features --features ipc-tls
  • cargo test -p datadog-agent-commons --no-default-features --features ipc-tls
  • cargo test -p datadog-agent-commons

@pr-commenter

pr-commenter Bot commented Aug 18, 2026

Copy link
Copy Markdown

Binary Size Analysis (Agent Data Plane)

Baseline: f78be12 · Comparison: d6aff00 · diff
Analysis Configuration: stripped binaries · Pass/Fail Threshold: +5%
Sizes: 41.45 MiB (baseline) vs 41.44 MiB (comparison)
Size Change: -3.32 KiB (-0.01%)

✅ Binary size difference within threshold

Changes by Module
Module File Size Symbols
anon.87d68375dae48de77d04406b3cb482dd.342.llvm.7987369608309113016 -17.09 KiB 1
anon.9861da215e522ff5bd059960b7e2401a.342.llvm.16425392581908538752 +17.09 KiB 1
anon.10249fa6e4658d11e0af6a358b87303e.587.llvm.18036747081050336684 +12.20 KiB 1
anon.c45ef2d0bb42fcd70fa2410fd7c782fd.587.llvm.15605491356689199442 -12.20 KiB 1
anon.87d68375dae48de77d04406b3cb482dd.382.llvm.7987369608309113016 -10.26 KiB 1
anon.9861da215e522ff5bd059960b7e2401a.382.llvm.16425392581908538752 +10.25 KiB 1
anon.87d68375dae48de77d04406b3cb482dd.336.llvm.7987369608309113016 -9.69 KiB 1
anon.9861da215e522ff5bd059960b7e2401a.336.llvm.16425392581908538752 +9.69 KiB 1
anon.9861da215e522ff5bd059960b7e2401a.8.llvm.16425392581908538752 +8.40 KiB 1
anon.87d68375dae48de77d04406b3cb482dd.8.llvm.7987369608309113016 -8.40 KiB 1
anon.f08775a606a4e4332c6dd93e8d276178.568.llvm.11272615020322144258 +6.85 KiB 1
anon.aaa3fd3e09bf32fb2844d22df97d91d0.568.llvm.17859875423138014482 -6.85 KiB 1
anon.1019356267e6764acc365d2b9f92c85e.743.llvm.16086841153684640238 +6.54 KiB 1
anon.9421e7264ec277a2915cb8886eca1d22.743.llvm.4668834490700969601 -6.54 KiB 1
anon.a3f0c95f6c0673178e92934f46629e8b.990.llvm.5772137365857750574 -4.57 KiB 1
anon.16d0c59016f131f242d6ba451b56363f.990.llvm.96744435794638102 +4.57 KiB 1
anon.9421e7264ec277a2915cb8886eca1d22.994.llvm.4668834490700969601 -3.57 KiB 1
anon.1019356267e6764acc365d2b9f92c85e.995.llvm.16086841153684640238 +3.57 KiB 1
anon.aaa3fd3e09bf32fb2844d22df97d91d0.0.llvm.17859875423138014482 -3.37 KiB 1
anon.f08775a606a4e4332c6dd93e8d276178.0.llvm.11272615020322144258 +3.37 KiB 1
Detailed Symbol Changes
    FILE SIZE        VM SIZE    
 --------------  -------------- 
  [NEW] +59.6Ki  [NEW] +59.4Ki    saluki_components::common::datadog::io::run_endpoint_io_loop::_{{closure}}::h890c7dc03b9b3fd5
  [NEW] +39.6Ki  [NEW] +39.5Ki    agent_data_plane::cli::run::create_topology::_{{closure}}::hd770b6b80dfed121
  [NEW] +39.1Ki  [NEW] +38.9Ki    _<saluki_components::forwarders::otlp::OtlpForwarder as saluki_core::components::forwarders::Forwarder>::run::_{{closure}}::h0c295eeec540b9a4
  [NEW] +38.0Ki  [NEW] +37.9Ki    agent_data_plane::cli::run::handle_run_command::_{{closure}}::heba2bb5589c84379
  [NEW] +37.2Ki  [NEW] +37.0Ki    _<saluki_components::transforms::aggregate::Aggregate as saluki_core::components::transforms::Transform>::run::_{{closure}}::h8930004983707434
  [NEW] +33.8Ki  [NEW] +33.6Ki    datadog_agent_commons::ipc::client::RemoteAgentClient::from_client_configuration::_{{closure}}::_{{closure}}::_{{closure}}::he057fb1ea788d3ed
  [NEW] +31.8Ki  [NEW] +31.7Ki    agent_data_plane::cli::dogstatsd::run_dogstatsd_command::_{{closure}}::hddf45f64de98c338
  [NEW] +30.7Ki  [NEW] +30.5Ki    _<saluki_components::sources::dogstatsd::_::<impl serde_core::de::Deserialize for saluki_components::sources::dogstatsd::DogStatsDConfiguration>::deserialize::__Visitor as serde_core::de::Visitor>::visit_map::h427d3b9f9b826634
  [NEW] +28.6Ki  [NEW] +28.4Ki    agent_data_plane::dogstatsd_contexts::artifact::for_each_record::h0474c5f075a41d6c
  [NEW] +27.4Ki  [NEW] +27.2Ki    core::ptr::drop_in_place<agent_data_plane::cli::run::handle_run_command::{{closure}}>::h79e0ec037fd43e23
  -0.0% -3.96Ki  -0.0%    -613    [35405 Others]
  [DEL] -27.4Ki  [DEL] -27.2Ki    core::ptr::drop_in_place<agent_data_plane::cli::run::handle_run_command::{{closure}}>::hb05b4e2ea8b0b7ff
  [DEL] -28.6Ki  [DEL] -28.4Ki    agent_data_plane::dogstatsd_contexts::artifact::for_each_record::hc93e919d15032bb5
  [DEL] -30.7Ki  [DEL] -30.5Ki    _<saluki_components::sources::dogstatsd::_::<impl serde_core::de::Deserialize for saluki_components::sources::dogstatsd::DogStatsDConfiguration>::deserialize::__Visitor as serde_core::de::Visitor>::visit_map::h3b1fc57bf962b08b
  [DEL] -31.8Ki  [DEL] -31.7Ki    agent_data_plane::cli::dogstatsd::run_dogstatsd_command::_{{closure}}::hd1190183c4adc20c
  [DEL] -33.8Ki  [DEL] -33.6Ki    datadog_agent_commons::ipc::client::RemoteAgentClient::from_client_configuration::_{{closure}}::_{{closure}}::_{{closure}}::h0a3a39f559cee5ad
  [DEL] -37.1Ki  [DEL] -36.9Ki    _<saluki_components::transforms::aggregate::Aggregate as saluki_core::components::transforms::Transform>::run::_{{closure}}::h934afb4f4b213f05
  [DEL] -38.0Ki  [DEL] -37.9Ki    agent_data_plane::cli::run::handle_run_command::_{{closure}}::h22ede43fcbf9aa04
  [DEL] -39.1Ki  [DEL] -38.9Ki    _<saluki_components::forwarders::otlp::OtlpForwarder as saluki_core::components::forwarders::Forwarder>::run::_{{closure}}::h38b7109453fa7c77
  [DEL] -39.6Ki  [DEL] -39.5Ki    agent_data_plane::cli::run::create_topology::_{{closure}}::h657023a2768727b2
  [DEL] -59.0Ki  [DEL] -58.9Ki    saluki_components::common::datadog::io::run_endpoint_io_loop::_{{closure}}::hd1aa6921ded513c7
  -0.0% -3.32Ki  +0.0%     +44    TOTAL

@pr-commenter

pr-commenter Bot commented Aug 18, 2026

Copy link
Copy Markdown

Regression Detector (Agent Data Plane)

Run ID: 43839c74-836a-4275-b81f-7198c36df05d
Baseline: f78be129 · Comparison: d6aff009 · diff

Optimization Goals: ✅ No significant changes detected

Fine details of change detection per experiment (5)

Experiments configured erratic: true are tagged (ignored) and skipped when determining which experiments regressed or improved. Experiments which are detected as erratic at runtime are tagged (erratic) to flag that the run's sample dispersion was high, but their regression / improvement signal still counts.

experiment goal Δ mean % links
quality_gates_rss_dsd_ultraheavy memory ⚪ +0.68 metrics profiles logs
quality_gates_rss_idle memory ⚪ +0.50 metrics profiles logs
quality_gates_rss_dsd_medium memory ⚪ +0.10 metrics profiles logs
quality_gates_rss_dsd_low memory ⚪ -0.19 metrics profiles logs
quality_gates_rss_dsd_heavy memory ⚪ -0.28 metrics profiles logs
Bounds Checks: ✅ Passed (5)
experiment check replicates observed links
quality_gates_rss_dsd_heavy memory_usage 10/10 ✅ 232 MiB ≤ 250 MiB metrics profiles logs
quality_gates_rss_dsd_low memory_usage 10/10 ✅ 51 MiB ≤ 60 MiB metrics profiles logs
quality_gates_rss_dsd_medium memory_usage 10/10 ✅ 90.5 MiB ≤ 100 MiB metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory_usage 10/10 ✅ 392 MiB ≤ 420 MiB metrics profiles logs
quality_gates_rss_idle memory_usage 10/10 ✅ 31.7 MiB ≤ 40 MiB metrics profiles logs
Explanation

A change is flagged as a regression when |Δ mean %| > 5.00% in the regressing direction for its optimization goal AND SMP marks the experiment as a regression (is_regression: true). Improvements use the matching criteria for the improving direction. Experiments configured erratic: true (tagged (ignored)) are skipped outright; experiments detected as erratic at runtime (tagged (erratic)) still count, since that flag describes sample dispersion rather than directional certainty. The Δ mean % cell is colored accordingly: 🟢 = improvement, 🔴 = regression, ⚪ = neutral. Reduction in CPU or memory is an improvement; reduction in ingress throughput is a regression. Experiments tagged (no analysis) show ⚠️ n/a: SMP ran them but produced no analysis, usually because a replicate failed and exhausted its retries. Check the SMP report for that experiment's replicate failures.

@embeaken
embeaken marked this pull request as ready for review August 18, 2026 19:56
@embeaken
embeaken requested a review from a team as a code owner August 18, 2026 19:56

@datadog-datadog-prod-us1-2 datadog-datadog-prod-us1-2 Bot 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.

Datadog Autotest: PASS

More details

The ipc-tls feature enables every dependency required by the exposed TLS module, while the default full feature preserves the crate’s existing API and dependency behavior.

Was this helpful? React 👍 or 👎

Open Bits AI session

🤖 Datadog Autotest · Commit d6aff00 · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest

@embeaken embeaken closed this Aug 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant