Skip to content

Trace agent to ADP poc#1521

Draft
ajgajg1134 wants to merge 24 commits into
mainfrom
andrew.glaude/trace-agent-2
Draft

Trace agent to ADP poc#1521
ajgajg1134 wants to merge 24 commits into
mainfrom
andrew.glaude/trace-agent-2

Conversation

@ajgajg1134
Copy link
Copy Markdown
Contributor

Summary

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/core Core functionality, event model, etc. area/components Sources, transforms, and destinations. labels Apr 28, 2026
@pr-commenter
Copy link
Copy Markdown

pr-commenter Bot commented Apr 28, 2026

Binary Size Analysis (Agent Data Plane)

Target: 542d70f (baseline) vs 26dd376 (comparison) diff
Analysis Type: Stripped binaries (debug symbols excluded)
Baseline Size: 36.95 MiB
Comparison Size: 37.26 MiB
Size Change: +315.02 KiB (+0.83%)
Pass/Fail Threshold: +5%
Result: PASSED ✅

Changes by Module

Module File Size Symbols
figment -112.94 KiB 557
core +86.37 KiB 8721
tokio +68.20 KiB 3678
hyper_util +62.56 KiB 83
saluki_components::sources::apm +62.14 KiB 55
axum +56.91 KiB 251
prost -46.58 KiB 284
otlp_protos::otlp_include::opentelemetry +40.82 KiB 211
alloc +24.33 KiB 1205
[sections] +24.31 KiB 8
agent_data_plane::cli::run +20.43 KiB 85
saluki_components::encoders::datadog +19.72 KiB 322
serde_core -18.76 KiB 681
saluki_components::sources::otlp -18.51 KiB 193
hashbrown +17.17 KiB 540
saluki_components::transforms::trace_sampler +15.86 KiB 72
agent_data_plane::components::v1_apm_onboarding +15.61 KiB 13
saluki_components::common::datadog +14.39 KiB 351
h2 +12.43 KiB 504
http_body_util +11.88 KiB 156

Detailed Symbol Changes

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +2.7%  +401Ki  +3.0%  +352Ki    [29577 Others]
  [NEW]  +144Ki  [NEW]  +144Ki    agent_data_plane::cli::run::handle_run_command::_{{closure}}::h1ff1527065bb7fc0
  [NEW] +65.2Ki  [NEW] +65.0Ki    saluki_core::topology::built::BuiltTopology::spawn::_{{closure}}::h73822c10e367a5a4
  [NEW] +64.9Ki  [NEW] +64.8Ki    agent_data_plane::run_inner::_{{closure}}::hcc63e7cfb2c37f92
  [NEW] +62.8Ki  [NEW] +62.7Ki    agent_data_plane::cli::run::create_topology::_{{closure}}::h9eeed7d4cf9a9b56
  [NEW] +57.7Ki  [NEW] +57.5Ki    saluki_core::topology::blueprint::TopologyBlueprint::build::_{{closure}}::hdf31f7c415d20374
  [NEW] +57.4Ki  [NEW] +57.2Ki    agent_data_plane::cli::debug::handle_debug_command::_{{closure}}::ha45fdcf4b65e079c
  [NEW] +43.3Ki  [NEW] +43.1Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::hdeeccc1c9e29cf16
  [NEW] +42.5Ki  [NEW] +42.3Ki    saluki_components::common::datadog::io::run_endpoint_io_loop::_{{closure}}::h8d70ac990e2b1ca5
  [NEW] +39.3Ki  [NEW] +39.1Ki    saluki_env::workload::providers::remote_agent::build_collector::_{{closure}}::hea8a03915142c0c8
  [DEL] -38.3Ki  [DEL] -38.2Ki    saluki_components::common::datadog::io::run_endpoint_io_loop::_{{closure}}::h5900b93b79bd6575
  [DEL] -38.9Ki  [DEL] -38.7Ki    _<saluki_components::forwarders::otlp::OtlpForwarder as saluki_core::components::forwarders::Forwarder>::run::_{{closure}}::h237d72325871dfe4
  [DEL] -42.3Ki  [DEL] -42.2Ki    saluki_components::sources::otlp::metrics::translator::OtlpMetricsTranslator::translate_metrics::hbd8afdd9517deff4
  [DEL] -43.3Ki  [DEL] -43.1Ki    _<figment::value::de::ConfiguredValueDe<I> as serde_core::de::Deserializer>::deserialize_struct::hf0ff84fd0c869047
  [DEL] -47.0Ki  [DEL] -46.8Ki    _<saluki_components::transforms::apm_stats::ApmStats as saluki_core::components::transforms::Transform>::run::_{{closure}}::hff61e8bf39ebfbe6
  [DEL] -57.4Ki  [DEL] -57.2Ki    saluki_env::workload::providers::remote_agent::RemoteAgentWorkloadProvider::from_configuration::_{{closure}}::hcce1ce9fdbdbcd15
  [DEL] -57.5Ki  [DEL] -57.4Ki    agent_data_plane::cli::debug::handle_debug_command::_{{closure}}::h5746d170be72c8e9
  [DEL] -57.7Ki  [DEL] -57.5Ki    saluki_core::topology::blueprint::TopologyBlueprint::build::_{{closure}}::he60dac69c3b38956
  [DEL] -63.9Ki  [DEL] -63.7Ki    agent_data_plane::run_inner::_{{closure}}::h432579399349d977
  [DEL] -65.3Ki  [DEL] -65.1Ki    saluki_core::topology::built::BuiltTopology::spawn::_{{closure}}::hc3cf502c9d972507
  [DEL]  -152Ki  [DEL]  -152Ki    agent_data_plane::cli::run::handle_run_command::_{{closure}}::h75c9cbb2fa0f1b34
  +0.8%  +315Ki  +0.9%  +266Ki    TOTAL

@pr-commenter
Copy link
Copy Markdown

pr-commenter Bot commented Apr 28, 2026

Regression Detector (Agent Data Plane)

This comment was omitted because it was over 65,536 characters.Please check the Gitlab Job logs to see its output.

@dd-octo-sts dd-octo-sts Bot added the transform/trace-sampler Trace Sampler synchronous transform. label May 1, 2026
@dd-octo-sts dd-octo-sts Bot added transform/apm-stats APM Stats transform. transform/trace-obfuscation Trace Obfuscation synchronous transform. labels May 1, 2026
ajgajg1134 and others added 9 commits May 1, 2026 16:16
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…nsform (step 6)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…urce_tags

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
Replace the three private `Span` fields (`meta`, `metrics`, `meta_struct`)
and their accessor methods with a single `pub attributes: FastHashMap<MetaString,
AttributeValue>`. Add `AttributeValue::as_string/as_float/as_bytes` helpers.
Keep `with_meta`/`with_metrics`/`with_meta_struct` builders as convenience
adapters. Migrate all 24 affected source files to use `span.attributes` directly.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…mpling compat (step 5)

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
…ace_id, fix OTLP bytes

Five corrections from post-migration review:

1. SpanLink.attributes: change from FastHashMap<MetaString, MetaString> to
   FastHashMap<MetaString, AttributeValue>, consistent with Span.attributes.
   The APM source now preserves non-string V1 link attributes (Bool→String,
   Int/Double→Float, Bytes→Bytes) instead of silently dropping them.
   The idx encoder uses write_idx_attribute_map for typed encoding; the
   msgpack encoder encodes only String variants (proto map<string,string>
   constraint).

2. Remove Span.trace_id: delete the field, trace_id(), with_trace_id(), and
   the trace_id parameter from Span::new. All readers migrated to
   trace.trace_id_low (encoder, OTLP trace sampler, score sampler). The
   score sampler's apply_sample_rate gains a trace_id: u64 parameter.
   ~20 call sites updated across tests and production code.

3. OTLP span Bytes attributes: fix map_attribute_generic to insert
   BytesValue into meta_struct instead of a "<N bytes>" placeholder string.
   otel_span_to_dd_span now accumulates a meta_struct map and folds it into
   the span via with_meta_struct, consistent with the resource attribute path.

4. Builder doc comments: document the merge-not-replace semantics of
   with_meta, with_metrics, and with_meta_struct and their key-uniqueness
   contract.

5. OTLP translator comment: note in extract_resource_meta that
   language_version is intentionally empty for OTLP traces — OTLP has no
   standardised runtime version attribute.

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
@dd-octo-sts dd-octo-sts Bot added the encoder/datadog-traces Datadog Traces encoder. label May 12, 2026
ajgajg1134 and others added 6 commits May 12, 2026 11:48
…ttrs

Step 1 — Consolidate OTLP and V1 APM pipelines to single idx encoder
- V1DatadogTraceConfiguration gains otlp_traces: TracesConfig
- V1TraceEndpointEncoder gains OTLP enrichment: otlp- tracer-version
  prefix, _dd.otlp_sr chunk attr (typed double), _dd.p.dm chunk attr,
  ETS HTTP header + chunk attr, container tag extraction, hostname
  fallback
- add_baseline_traces_pipeline_to_blueprint switched to
  V1DatadogTraceConfiguration; encoders/datadog/traces/ deleted

Steps 2–4 — Widen AttributeValue, unify conversion and encoding
- AttributeValue gains Bool, Int, Array (recursive), KeyValueList;
  EventAttributeValue and EventAttributeScalarValue deleted
- SpanEvent.attributes: FastHashMap<MetaString, EventAttributeValue>
  → FastHashMap<MetaString, AttributeValue>
- v1_anyvalue_to_attribute_value now maps all 7 RawAnyValue variants
  faithfully (Bool→Bool, Int→Int, Array recursive, KVList→KeyValueList);
  v1_anyvalue_to_event_attribute_value deleted
- encode_attribute_value covers all 7 variants with recursive array_value
  and key_value_list builders; encode_event_attribute_value deleted
- write_idx_span_attrs and write_idx_event_attrs collapsed into
  write_idx_attribute_map; intern_attribute_value_strings recurses

Fix pre-existing test compilation failures in agent-data-plane
- ottl_filter/transform processors: resource.attributes reads now use
  trace.attributes (FastHashMap) instead of empty TagSet; SpanFilterContext
  and SpanTransformContext updated accordingly
- ottl_transform_processor: resource_tags param in make_trace was silently
  ignored; now populates trace.attributes; assertion updated to read from
  trace.attributes instead of removed resource_tags() method

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
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/core Core functionality, event model, etc. encoder/datadog-traces Datadog Traces encoder. transform/apm-stats APM Stats transform. transform/trace-obfuscation Trace Obfuscation synchronous transform. transform/trace-sampler Trace Sampler synchronous transform.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant