Skip to content

fix(metrics): skip V3 encoding for V2-only endpoints - #2227

Draft
rayz wants to merge 2 commits into
rayz/remove-adp-v3-series-gatefrom
rayz/test-v3-endpoint-aware-encoder-selection
Draft

fix(metrics): skip V3 encoding for V2-only endpoints#2227
rayz wants to merge 2 commits into
rayz/remove-adp-v3-series-gatefrom
rayz/test-v3-endpoint-aware-encoder-selection

Conversation

@rayz

@rayz rayz commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Determine whether any configured metrics endpoint requires V3 before constructing the V3 series encoder.
  • Skip V3 serialization when every endpoint is using V2.
  • Explicitly enable V3 series for the SMP blackhole endpoint so SMP exercises the actual V3 forwarding path instead of silently remaining on V2 because localhost does not match datadog_only.

This avoids encoding and buffering an unused V3 payload for V2-only configurations while retaining V3 encoding whenever at least one endpoint requires it.

Change Type

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

How did you test this PR?

References

@dd-octo-sts dd-octo-sts Bot added area/components Sources, transforms, and destinations. encoder/datadog-metrics Datadog Metrics encoder. labels Jul 28, 2026
@datadog-official

datadog-official Bot commented Jul 28, 2026

Copy link
Copy Markdown

Pipelines

Unblock PR with BitsAI

⚠️ Warnings

🚦 2 Pipeline jobs failed

DataDog/saluki | run-benchmarks-adp   View in Datadog   GitLab

Semantic PR Title Check | Check For Semantic PR Title   View in Datadog   GitHub Actions

Useful? React with 👍 / 👎

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

@rayz
rayz force-pushed the rayz/test-v3-endpoint-aware-encoder-selection branch from dae706e to e6d24e9 Compare July 28, 2026 23:08
@pr-commenter

pr-commenter Bot commented Jul 28, 2026

Copy link
Copy Markdown

Binary Size Analysis (Agent Data Plane)

Baseline: 032b9ac · Comparison: 0d1a573 · diff
Analysis Configuration: stripped binaries · Pass/Fail Threshold: +5%
Sizes: 40.83 MiB (baseline) vs 40.84 MiB (comparison)
Size Change: +5.55 KiB (+0.01%)

✅ Binary size difference within threshold

Changes by Module
Module File Size Symbols
hyper +48.02 KiB 95
hyper_util -43.39 KiB 10
figment -40.84 KiB 185
saluki_components::common::datadog +30.02 KiB 109
saluki_components::sources::otlp +21.96 KiB 31
hashbrown +18.42 KiB 158
axum -17.96 KiB 116
std -17.43 KiB 115
anon.1c766fa05dd13eba06da95c69824d6af.995.llvm.16845278109024732812 -17.36 KiB 1
anon.1c766fa05dd13eba06da95c69824d6af.995.llvm.2183139281678763661 +17.36 KiB 1
anon.1c5af32c575c0d14ae778d58023b5abf.0.llvm.10081054402879163701 +17.36 KiB 1
anon.ad88aefe8160b8dedfdf5305e59f030a.513.llvm.6948463008055664385 -17.27 KiB 1
saluki_components::encoders::datadog +17.17 KiB 72
serde_core +17.06 KiB 196
tokio_rustls -12.72 KiB 12
chrono -12.71 KiB 10
anon.ad88aefe8160b8dedfdf5305e59f030a.665.llvm.6948463008055664385 -12.20 KiB 1
anon.ffe0ccedd42a78dc35ad276479c57863.558.llvm.6176032040213260226 +12.02 KiB 1
crossbeam_channel +10.30 KiB 31
serde -10.25 KiB 24
Detailed Symbol Changes
    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.7% +76.7Ki  +0.5% +47.2Ki    [15714 Others]
  [NEW] +59.7Ki  [NEW] +59.6Ki    saluki_components::common::datadog::io::run_endpoint_io_loop::_{{closure}}::h9313854c2f2a044f
  [NEW] +32.6Ki  [NEW] +32.3Ki    _<saluki_components::common::datadog::config::_::<impl serde_core::de::Deserialize for saluki_components::common::datadog::config::ForwarderConfiguration>::deserialize::__Visitor as serde_core::de::Visitor>::visit_map::h215858157e52a210
  [NEW] +17.4Ki  [NEW] +17.3Ki    anon.1c766fa05dd13eba06da95c69824d6af.995.llvm.2183139281678763661
  [NEW] +17.4Ki  [NEW]     +76    anon.1c5af32c575c0d14ae778d58023b5abf.0.llvm.10081054402879163701
  [NEW] +12.7Ki  [NEW] +12.5Ki    _<saluki_components::encoders::datadog::metrics::DatadogMetricsConfiguration as saluki_core::components::encoders::builder::EncoderBuilder>::build::_{{closure}}::h5ca37cf4fddb78c4
  [NEW] +12.1Ki  [NEW] +11.9Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::h2291bdd8b058a751
  [NEW] +12.0Ki  [NEW] +11.9Ki    _<T as alloc::string::SpecToString>::spec_to_string::h8144f32f6d7c3d68
  [DEL] -12.1Ki  [DEL] -11.9Ki    _<figment::value::magic::RelativePathBuf as figment::value::magic::Magic>::deserialize_from::h8bc594fc2cb35d4d
  [DEL] -12.2Ki  [DEL]     -81    anon.ad88aefe8160b8dedfdf5305e59f030a.665.llvm.6948463008055664385
  [DEL] -12.4Ki  [DEL] -12.3Ki    _<chrono::format::formatting::DelayedFormat<I> as core::fmt::Display>::fmt::h46581aaf02582bbc
 -74.3% -12.7Ki -74.6% -12.7Ki    prost::message::Message::encode::h28ad969e25341bd5
 -84.0% -13.7Ki -84.8% -13.7Ki    _<hyper_util::server::conn::auto::Connection<I,S,E> as core::future::future::Future>::poll::h5670434c8a709418
 -86.2% -13.8Ki -87.0% -13.8Ki    _<hyper_util::server::conn::auto::Connection<I,S,E> as core::future::future::Future>::poll::he89a2edaa7fcd54b
  [DEL] -14.3Ki  [DEL] -14.1Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_any::h2e163da9da896fb8
 -85.3% -14.8Ki -86.1% -14.8Ki    _<hyper_util::server::conn::auto::Connection<I,S,E> as core::future::future::Future>::poll::hca913f7324cfdd5b
  [DEL] -14.9Ki  [DEL] -14.8Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::ha36113e815a9c1ca
  [DEL] -17.3Ki  [DEL]     -76    anon.ad88aefe8160b8dedfdf5305e59f030a.513.llvm.6948463008055664385
  [DEL] -17.4Ki  [DEL] -17.3Ki    anon.1c766fa05dd13eba06da95c69824d6af.995.llvm.16845278109024732812
  [DEL] -19.6Ki  [DEL] -19.5Ki    saluki_components::transforms::apm_stats::ApmStats::process_trace::h0c7467fe110ac0a8
  [DEL] -59.9Ki  [DEL] -59.7Ki    saluki_components::common::datadog::io::run_endpoint_io_loop::_{{closure}}::h3e35c9d992da4100
  +0.0% +5.55Ki  -0.0% -12.0Ki    TOTAL

@dd-octo-sts dd-octo-sts Bot added the area/test All things testing: unit/integration, correctness, SMP regression, etc. label Jul 28, 2026
@pr-commenter

pr-commenter Bot commented Jul 28, 2026

Copy link
Copy Markdown

Regression Detector (Agent Data Plane)

Run ID: 937d188f-8545-475b-9267-1f4914ffa933
Baseline: 032b9ac5 · Comparison: 0d1a5731 · diff

Optimization Goals: ❌ 2 regressions detected

experiment goal Δ mean % links
quality_gates_rss_dsd_heavy (erratic) memory 🔴 +213.59 metrics profiles logs
quality_gates_rss_dsd_ultraheavy (erratic) memory 🔴 +166.49 metrics profiles logs
Fine details of change detection per experiment (3)

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_medium (erratic) memory ⚪ +3.13 metrics profiles logs
quality_gates_rss_dsd_low memory ⚪ +0.07 metrics profiles logs
quality_gates_rss_idle memory ⚪ -0.38 metrics profiles logs
Bounds Checks: ❌ Failed (5)
experiment check replicates observed links
quality_gates_rss_dsd_heavy memory_usage 0/10 ❌ 466 MiB ≤ 140 MiB metrics profiles logs
quality_gates_rss_dsd_low memory_usage 0/10 ❌ 52.7 MiB ≤ 50 MiB metrics profiles logs
quality_gates_rss_dsd_medium memory_usage 0/10 ❌ 96.6 MiB ≤ 75 MiB metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory_usage 0/10 ❌ 519 MiB ≤ 200 MiB metrics profiles logs
quality_gates_rss_idle memory_usage 10/10 ✅ 31.5 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.

@rayz rayz changed the title [test] v3 endpoint smp fix(metrics): skip V3 encoding for V2-only endpoints Jul 28, 2026

tobz commented Jul 29, 2026

Copy link
Copy Markdown
Member

Warning

This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
Learn more

This stack of pull requests is managed by Graphite. Learn more about stacking.

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

Labels

area/components Sources, transforms, and destinations. area/test All things testing: unit/integration, correctness, SMP regression, etc. encoder/datadog-metrics Datadog Metrics encoder.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants