Skip to content

chore(config): migrate OTTL transform to typed configuration - #2263

Merged
webern merged 1 commit into
mainfrom
m/confra-otran
Aug 10, 2026
Merged

chore(config): migrate OTTL transform to typed configuration#2263
webern merged 1 commit into
mainfrom
m/confra-otran

Conversation

@webern

@webern webern commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Summary

Migrate the OTTL span transform processor to the typed traces configuration. The processor now receives typed error-mode and transform-statement values, and its raw configuration adapter is removed.

Change Type

  • Non-functional (chore, refactoring, docs)

How did you test this PR?

  • make fmt
  • make check-docs
  • make check-clippy
  • make check-all
  • OTTL transform tests: 24 passed
  • cargo check -p agent-data-plane --tests

References

@pr-commenter

pr-commenter Bot commented Aug 5, 2026

Copy link
Copy Markdown

Binary Size Analysis (Agent Data Plane)

Baseline: 2ce0908 · Comparison: fff36a0 · diff
Analysis Configuration: stripped binaries · Pass/Fail Threshold: +5%
Sizes: 41.31 MiB (baseline) vs 41.39 MiB (comparison)
Size Change: +89.17 KiB (+0.21%)

✅ Binary size difference within threshold

Changes by Module
Module File Size Symbols
core +75.82 KiB 1180
tokio +32.86 KiB 412
saluki_common::resource_tracking::groups +23.95 KiB 6
saluki_common::task::instrument -22.59 KiB 7
hyper -22.25 KiB 17
h2 +19.18 KiB 42
agent_data_plane::internal::remote_agent -18.49 KiB 14
anon.71247e6768bc3ff5210891ad39f5ad3e.573.llvm.16394933846966769920 +17.62 KiB 1
anon.5267a291e5f08ab9d80458cdfc1a9218.14.llvm.16802303590854200399 -17.53 KiB 1
std -17.52 KiB 47
prost -13.72 KiB 17
serde_core -13.53 KiB 119
anon.71247e6768bc3ff5210891ad39f5ad3e.686.llvm.16394933846966769920 +12.37 KiB 1
anon.1f80ce2ea163219c91306f97a3cc048a.579.llvm.14847804023011234010 -12.28 KiB 1
agent_data_plane_config::shared::_ -12.04 KiB 16
[sections] +11.97 KiB 8
axum -10.96 KiB 89
saluki_common::cache::CacheBuilder<K,V,W,H> +10.77 KiB 1
agent_data_plane_config::domains::dogstatsd +10.49 KiB 13
agent_data_plane_config::_::_<impl serde_core +10.12 KiB 1
Detailed Symbol Changes
    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +1.8%  +109Ki  +1.1% +48.4Ki    [5755 Others]
  [NEW] +33.0Ki  [NEW] +32.8Ki    agent_data_plane::internal::env::workload::RemoteAgentWorkloadProvider::from_configuration::_{{closure}}::hb9276a11f915d291
 +17e2% +26.8Ki +18e2% +26.8Ki    agent_data_plane::dogstatsd_contexts::artifact::for_each_record::ha4e06ef9d824f235
  [NEW] +17.6Ki  [NEW]     +76    anon.71247e6768bc3ff5210891ad39f5ad3e.573.llvm.16394933846966769920
  [NEW] +15.7Ki  [NEW] +15.5Ki    _<h2::client::Connection<T,B> as core::future::future::Future>::poll::h41a8072f644cb4e7
  [NEW] +15.6Ki  [NEW] +15.4Ki    _<core::future::poll_fn::PollFn<F> as core::future::future::Future>::poll::ha3f4d3cc5889e726
  +169% +15.2Ki  +171% +15.2Ki    agent_data_plane::state::metrics::rules::get_datadog_agent_remappings::hdf20e2a8dcc983e4
  [NEW] +14.2Ki  [NEW] +14.0Ki    _<h2::client::Connection<T,B> as core::future::future::Future>::poll::h4886d448713196ce
  [NEW] +12.4Ki  [NEW]     +81    anon.71247e6768bc3ff5210891ad39f5ad3e.686.llvm.16394933846966769920
   +84% +12.2Ki   +84% +12.2Ki    core::ptr::drop_in_place<agent_data_plane::cli::run::handle_run_command::{{closure}}>::h89ae9ab35e94ec3f
  [DEL] -12.3Ki  [DEL]     -81    anon.1f80ce2ea163219c91306f97a3cc048a.579.llvm.14847804023011234010
  [DEL] -12.5Ki  [DEL] -12.4Ki    agent_data_plane::dogstatsd_contexts::artifact::decode_records::h6f71107eea51d418
  [DEL] -12.7Ki  [DEL] -12.6Ki    agent_data_plane::dogstatsd_contexts::artifact::decode_records::h14dabe22dc89b463
  [DEL] -12.9Ki  [DEL] -12.8Ki    agent_data_plane::state::metrics::rules::dogstatsd::get_dogstatsd_remappings::ha71516d8223bc1b6
 -69.7% -14.7Ki -70.2% -14.7Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::h6c5e847551d5f92c
 -91.3% -15.2Ki -92.7% -15.2Ki    _<agent_data_plane::internal::remote_agent::RemoteAgentEventReporter as saluki_core::runtime::supervisor::Supervisable>::initialize::_{{closure}}::_{{closure}}::h6ee40e4c6349ee80
  [DEL] -17.5Ki  [DEL]     -76    anon.5267a291e5f08ab9d80458cdfc1a9218.14.llvm.16802303590854200399
  [DEL] -19.9Ki  [DEL] -19.8Ki    agent_data_plane::internal::env::ADPEnvironmentProvider::from_configuration::_{{closure}}::hbf519b844eb69f03
  [DEL] -20.8Ki  [DEL] -20.6Ki    agent_data_plane::internal::env::workload::build_collector::_{{closure}}::h11f056b0e952ff1d
 -74.9% -21.4Ki -75.3% -21.4Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::ha4ed5ea72e5ab5f4
 -77.8% -22.9Ki -78.2% -22.9Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::h58b266ff3a7eeafe
  +0.2% +89.2Ki  +0.1% +28.0Ki    TOTAL

@pr-commenter

pr-commenter Bot commented Aug 5, 2026

Copy link
Copy Markdown

Regression Detector (Agent Data Plane)

Run ID: f188cb84-281e-4979-9990-153d1b23daac
Baseline: 2ce09089 · Comparison: fff36a04 · 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.37 metrics profiles logs
quality_gates_rss_dsd_low memory ⚪ +0.35 metrics profiles logs
quality_gates_rss_dsd_heavy memory ⚪ +0.32 metrics profiles logs
quality_gates_rss_idle memory ⚪ -0.01 metrics profiles logs
quality_gates_rss_dsd_medium memory ⚪ -0.18 metrics profiles logs
Bounds Checks: ❌ Failed (5)
experiment check replicates observed links
quality_gates_rss_dsd_heavy memory_usage 10/10 ✅ 225 MiB ≤ 250 MiB metrics profiles logs
quality_gates_rss_dsd_low memory_usage 10/10 ✅ 51.1 MiB ≤ 60 MiB metrics profiles logs
quality_gates_rss_dsd_medium memory_usage 10/10 ✅ 90.7 MiB ≤ 100 MiB metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory_usage 9/10 ❌ 445 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.

@webern
webern force-pushed the m/confra-ofilt branch 2 times, most recently from 055b852 to 1005c62 Compare August 6, 2026 10:10
@webern
webern marked this pull request as ready for review August 6, 2026 10:18
@webern
webern requested a review from a team as a code owner August 6, 2026 10:18

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

Datadog Autotest: PASS

More details

The migration consistently routes OTTL transform settings through the typed traces configuration, whose loader tests cover defaults, valid modes, invalid modes, unknown fields, file translation, and environment transport. No diff-only behavioral regression was found; focused Rust execution could not start because the sandbox could not fetch the pinned git dependency.

Was this helpful? React 👍 or 👎

Open Bits AI session

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

@webern
webern force-pushed the m/confra-ofilt branch 2 times, most recently from fedf507 to dad25ce Compare August 6, 2026 12:31
@webern
webern force-pushed the m/confra-otran branch 2 times, most recently from d8f4844 to ef23127 Compare August 6, 2026 12:49
@webern
webern force-pushed the m/confra-ofilt branch 2 times, most recently from ae32e61 to 5e2ad06 Compare August 10, 2026 14:56

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

Ignore this: LGTM. Only thing is I believe we no longer deny_unknown_fields. If that's something we care about preserving, we would need to update the SalukiOnly::OttlTransformConfig to contain that. I just realized that this was addressed by the previous PR. I reviewed it from newest -> oldest. 😓

Base automatically changed from m/confra-ofilt to main August 10, 2026 16:36

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

Datadog Autotest: PASS

More details

Production-shaped OTTL filter and transform YAML preserved statement ordering, error modes, defaults, and malformed-input rejection through the typed configuration boundary.

Was this helpful? React 👍 or 👎

📊 Validated against 8 scenarios · Open Bits AI session

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

@webern
webern merged commit 14fb28f into main Aug 10, 2026
93 checks passed
@webern
webern deleted the m/confra-otran branch August 10, 2026 17:09
dd-octo-sts Bot pushed a commit that referenced this pull request Aug 10, 2026
## Summary

Migrate the OTTL span transform processor to the typed traces
configuration. The processor now receives typed error-mode and
transform-statement values, and its raw configuration adapter is
removed.

## Change Type
- [x] Non-functional (chore, refactoring, docs)

## How did you test this PR?

- `make fmt`
- `make check-docs`
- `make check-clippy`
- `make check-all`
- OTTL transform tests: 24 passed
- `cargo check -p agent-data-plane --tests`

## References

- Progresses #2169
- Progresses #2193 14fb28f
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.

2 participants