Skip to content

chore(traces): move trace normalization primitives out of the OTLP module - #2705

Draft
ajgajg1134 wants to merge 1 commit into
mainfrom
andrew.glaude/v1-normalize-move
Draft

ajgajg1134 wants to merge 1 commit into
mainfrom
andrew.glaude/v1-normalize-move

Conversation

@ajgajg1134

Copy link
Copy Markdown
Contributor

Summary

Moves common/otlp/traces/normalize.rs to common/traces/normalize.rs. This is the first of a stack of small PRs building the Datadog-native v1.0 (ETP) trace ingest pipeline. The v1.0 path will need the same span normalization rules as the OTLP translator, so they should live outside the OTLP module.

Pure move: the only edits are the module declarations, the import path in transform.rs, the file's doc comment, and widening pub(super) items to pub(crate). No behavior change.

Change Type

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

How did you test this PR?

  • make check-all: clean
  • cargo nextest run -p saluki-components -E 'test(/traces/)': 81/81 passed, including the moved normalization tests

References

Part of #2438 (Datadog-native intake).

🤖 Generated with Claude Code

…dule

Move common/otlp/traces/normalize.rs to common/traces/normalize.rs so the
upcoming Datadog v1.0 trace ingest path can share it with the OTLP
translator. Items previously scoped pub(super) become pub(crate). No
behavior change.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@ajgajg1134 ajgajg1134 added the changelog/no-changelog No changelog entry needed label Sep 28, 2026
@dd-octo-sts dd-octo-sts Bot added the area/components Sources, transforms, and destinations. label Sep 28, 2026
@pr-commenter

pr-commenter Bot commented Sep 28, 2026

Copy link
Copy Markdown

Binary Size Analysis (Agent Data Plane)

Baseline: 60cea0c · Comparison: 9b5291d · diff
Analysis Configuration: stripped binaries · Pass/Fail Threshold: +5%
Sizes: 39.50 MiB (baseline) vs 39.49 MiB (comparison)
Size Change: -1.20 KiB (-0.00%)

✅ Binary size difference within threshold

Changes by Module
Module File Size Symbols
saluki_components::common::otlp -10.78 KiB 14
saluki_components::common::traces +10.71 KiB 14
anon.584800d6f08692138ec0b32a9bf9605b.2.llvm.15878238381232796556 -2.61 KiB 1
anon.584800d6f08692138ec0b32a9bf9605b.2.llvm.6731186357998510851 +2.60 KiB 1
anon.584800d6f08692138ec0b32a9bf9605b.49.llvm.15878238381232796556 -1.34 KiB 1
anon.584800d6f08692138ec0b32a9bf9605b.49.llvm.6731186357998510851 +1.34 KiB 1
_RNvXsz_NtNtCs27Vx93FoQ6z_4core3str4iterNtB5_15SplitWhitespaceNtNtNtNtB9_4iter6traits8iterator8Iterator4next.llvm.12473172006234542144 +1.29 KiB 1
_RNvXsz_NtNtCs27Vx93FoQ6z_4core3str4iterNtB5_15SplitWhitespaceNtNtNtNtB9_4iter6traits8iterator8Iterator4next.llvm.12710457379878186261 -1.29 KiB 1
anon.584800d6f08692138ec0b32a9bf9605b.996.llvm.15878238381232796556 -819 B 1
anon.584800d6f08692138ec0b32a9bf9605b.996.llvm.6731186357998510851 +817 B 1
anon.591f5bbaae5876a27e515002c4fca9d5.4.llvm.10757419120740257070 -796 B 1
anon.591f5bbaae5876a27e515002c4fca9d5.4.llvm.5041139726441185632 +795 B 1
_RNvMs0_NtNtNtCs75vJTIYSa2J_3std4sync4mpmc5wakerNtB5_9SyncWaker10disconnect.llvm.6200445931789053615 +766 B 1
_RNvMs0_NtNtNtCs75vJTIYSa2J_3std4sync4mpmc5wakerNtB5_9SyncWaker10disconnect.llvm.9105201319624509728 -766 B 1
_RNvXsZ_NtCsgW8esjfipvk_5alloc6stringNtB5_6StringNtNtCs27Vx93FoQ6z_4core3fmt5Write10write_char.llvm.15878238381232796556 -758 B 1
_RNvXsZ_NtCsgW8esjfipvk_5alloc6stringNtB5_6StringNtNtCs27Vx93FoQ6z_4core3fmt5Write10write_char.llvm.6731186357998510851 +757 B 1
anon.af6d0e10f7161ea6c3cf2df6e6b7c76f.378.llvm.12518680365457883899 -737 B 1
anon.af6d0e10f7161ea6c3cf2df6e6b7c76f.378.llvm.5712156593923828288 +736 B 1
_RNvXsZ_NtCsgW8esjfipvk_5alloc6stringNtB5_6StringNtNtCs27Vx93FoQ6z_4core3fmt5Write9write_str.llvm.15878238381232796556 -726 B 1
_RNvXsZ_NtCsgW8esjfipvk_5alloc6stringNtB5_6StringNtNtCs27Vx93FoQ6z_4core3fmt5Write9write_str.llvm.6731186357998510851 +725 B 1
Detailed Symbol Changes
    FILE SIZE        VM SIZE    
 --------------  -------------- 
  [NEW] +3.38Ki  [NEW] +3.27Ki    saluki_components::common::traces::normalize::normalize_name::haf2a103ec86af26e
  [NEW] +2.60Ki  [NEW]     +75    anon.584800d6f08692138ec0b32a9bf9605b.2.llvm.6731186357998510851
  [NEW] +1.80Ki  [NEW] +1.69Ki    saluki_components::common::traces::normalize::normalize_unchecked::h7e864dd30ae9f14d
  [NEW] +1.34Ki  [NEW]      +8    anon.584800d6f08692138ec0b32a9bf9605b.49.llvm.6731186357998510851
  [NEW] +1.29Ki  [NEW] +1.13Ki    _RNvXsz_NtNtCs27Vx93FoQ6z_4core3str4iterNtB5_15SplitWhitespaceNtNtNtNtB9_4iter6traits8iterator8Iterator4next.llvm.12473172006234542144
  [NEW]    +976  [NEW]    +861    saluki_components::common::traces::normalize::normalize_service_into::hfb8628f547f445c5
  [NEW]    +902  [NEW]    +764    saluki_components::common::traces::normalize::is_valid_metric_name::h9e41c0f41e56f5c1
  [NEW]    +817  [NEW]     +90    anon.584800d6f08692138ec0b32a9bf9605b.996.llvm.6731186357998510851
  [NEW]    +795  [NEW]     +76    anon.591f5bbaae5876a27e515002c4fca9d5.4.llvm.5041139726441185632
  [NEW]    +766  [NEW]    +641    _RNvMs0_NtNtNtCs75vJTIYSa2J_3std4sync4mpmc5wakerNtB5_9SyncWaker10disconnect.llvm.6200445931789053615
  [DEL]    -766  [DEL]    -641    _RNvMs0_NtNtNtCs75vJTIYSa2J_3std4sync4mpmc5wakerNtB5_9SyncWaker10disconnect.llvm.9105201319624509728
  [DEL]    -796  [DEL]     -76    anon.591f5bbaae5876a27e515002c4fca9d5.4.llvm.10757419120740257070
  [DEL]    -819  [DEL]     -90    anon.584800d6f08692138ec0b32a9bf9605b.996.llvm.15878238381232796556
  [DEL]    -907  [DEL]    -764    saluki_components::common::otlp::traces::normalize::is_valid_metric_name::h2bd3fac90d768d0c
  [DEL]    -981  [DEL]    -861    saluki_components::common::otlp::traces::normalize::normalize_service_into::h39bc5bf421e8c027
  -0.1% -1.17Ki  [ = ]       0    [2255 Others]
  [DEL] -1.29Ki  [DEL] -1.13Ki    _RNvXsz_NtNtCs27Vx93FoQ6z_4core3str4iterNtB5_15SplitWhitespaceNtNtNtNtB9_4iter6traits8iterator8Iterator4next.llvm.12710457379878186261
  [DEL] -1.34Ki  [DEL]      -8    anon.584800d6f08692138ec0b32a9bf9605b.49.llvm.15878238381232796556
  [DEL] -1.80Ki  [DEL] -1.69Ki    saluki_components::common::otlp::traces::normalize::normalize_unchecked::hb306e4fbb9f0c3ff
  [DEL] -2.61Ki  [DEL]     -75    anon.584800d6f08692138ec0b32a9bf9605b.2.llvm.15878238381232796556
  [DEL] -3.38Ki  [DEL] -3.27Ki    saluki_components::common::otlp::traces::normalize::normalize_name::h79224b0e2c658e35
  -0.0% -1.20Ki  [ = ]       0    TOTAL

@pr-commenter

pr-commenter Bot commented Sep 28, 2026

Copy link
Copy Markdown

Regression Detector (Agent Data Plane)

Run ID: d50ebe2b-37ff-4a56-a431-347a2ca6c5a0
Baseline: 60cea0c5 · Comparison: 9b5291d8 · 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_idle memory ⚪ +0.44 metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory ⚪ +0.36 metrics profiles logs
quality_gates_rss_dsd_medium memory ⚪ +0.19 metrics profiles logs
quality_gates_rss_dsd_low memory ⚪ +0.12 metrics profiles logs
quality_gates_rss_dsd_heavy memory ⚪ -0.24 metrics profiles logs
Bounds Checks: ✅ Passed (5)
experiment check replicates observed links
quality_gates_rss_dsd_heavy memory_usage 10/10 ✅ 231 MiB ≤ 250 MiB metrics profiles logs
quality_gates_rss_dsd_low memory_usage 10/10 ✅ 52.5 MiB ≤ 60 MiB metrics profiles logs
quality_gates_rss_dsd_medium memory_usage 10/10 ✅ 92 MiB ≤ 100 MiB metrics profiles logs
quality_gates_rss_dsd_ultraheavy memory_usage 10/10 ✅ 384 MiB ≤ 420 MiB metrics profiles logs
quality_gates_rss_idle memory_usage 10/10 ✅ 34.1 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.

This branch has not been deployed

No deployments
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. changelog/no-changelog No changelog entry needed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant