Skip to content

[otap-dataflow] add transport header infrastructure#2539

Open
c1ly wants to merge 2 commits intoopen-telemetry:mainfrom
c1ly:support-headers-context
Open

[otap-dataflow] add transport header infrastructure#2539
c1ly wants to merge 2 commits intoopen-telemetry:mainfrom
c1ly:support-headers-context

Conversation

@c1ly
Copy link
Copy Markdown
Contributor

@c1ly c1ly commented Apr 4, 2026

Change Summary

Update the OtapPdata Context with the transport_headers field, so that OtapPdata can carry the headers through the pipeline.

Defined the TransportHeadersPolicy with HeaderCapturePolicy and HeaderPropagationPolicy, update the Policies to have a transport_headers field. Receiver and Exporter nodes can also define HeaderCapturePolicy and HeaderPropagationPolicy respectively, these definitions will override any top level HeaderCapturePolicy and HeaderPropagationPolicy rules.

Exposed the policy to the Receiver and Exporter nodes via the EffectHandler with helper functions that apply the policies on a iterator of key value pairs (for receiver nodes) and transport_headers (for exporter nodes)

What issue does this PR close?

How are these changes tested?

unit tests and integration tests

Are there any user-facing changes?

no

…des and propagating headers in exporter nodes. Exposed helper capture and propagation tools in the effect_handler for receiver and exporter nodes to use
@c1ly c1ly requested a review from a team as a code owner April 4, 2026 01:54
@github-actions github-actions bot added the rust Pull requests that update Rust code label Apr 4, 2026
Comment on lines +77 to +79
if result.len() >= defaults.max_entries {
break;
}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if the signature of this method should return some feedback about whether we failed to consume some of the pairs? Otherwise, it becomes a bit cumbersome, because we'd need to check a) that the pairs iter was consumed and b) that the result length is equal to the iter that was passed.

Maybe a different signature could be something like:

    pub fn capture_from_pairs<'a>(
        &self,
        headers: &mut TransportHeaders
        pairs: impl Iterator<Item = (&'a str, &'a [u8])>,
    ) -> Result<()> {

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

Labels

rust Pull requests that update Rust code

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

Support policy-based transport header extraction and propagation in OtapPdata

2 participants