Skip to content

Conversation

@rread
Copy link

@rread rread commented Oct 16, 2025

The current span context is extracted and serialized with the message, and deserialized in read_request_raw() and saved in thread local storage. The generated RemoteService now creates a new span based on the message variant name, and sets the new span's parent to the extracted context.

Fixes #71

Robert Read added 2 commits October 22, 2025 09:13
The current span context is extracted and serialized with the message,
and deserialized in read_request_raw() and saved in thread local
storage.  The generated RemoteService now creates a new span based on
the message variant name, and sets the new span's parent to the
extracted context.
Copy link
Member

@Frando Frando left a comment

Choose a reason for hiding this comment

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

Thanks! The feature sounds useful.

  • With this PR the wire format of a protocol changes based on feature flags for irpc. We can't do this unfortunately: You would never want your wire messages to change because some dependency enabled a feature on irpc which will - due to feature unification - affect all crates in the workspace dependency tree. So, we need a different approach here. I'll have to do some thinking how best to do this.

  • The PR makes the code generation dependant on feature flags on the proc macro crate. I think this is a no-go: Due to feature unification you can never know for sure if and where a feature got enabled. So this should be based on configuration via attributes on the rpc_requests macro instead.

  • The opentelemetry integration should be behind a separate feature use-tracing-opentelemetry or similar

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.

Support trace context propagation for rpc

2 participants