We need the ability to build an RMS client with a tracing layer:
TraceInjectService (W3C trace propagation)
Requires librms changes (or a new public extension point there).
Reasons:
The inject point is inside build_rms_client, before RackManagerClient::with_origin.
RmsTlsConnectionProvider returns an already-built client; you can’t retrofit headers onto the transport from NICo.
Reimplementing TLS/retry/connection-pooling in NICo would duplicate librms logic.
Reasonable librms options:
Wrap the hyper client with a caller-supplied tower layer (best: generic, no NICo-specific dep).
Add an optional feature that wraps with trace injection (would need a shared/neutral propagation crate — librms probably shouldn’t depend on NICo’s trace-propagation).
Expose build_rms_client / hyper-builder as public API so NICo can wrap before with_origin.
We need the ability to build an RMS client with a tracing layer:
TraceInjectService (W3C trace propagation)
Requires librms changes (or a new public extension point there).
Reasons:
The inject point is inside build_rms_client, before RackManagerClient::with_origin.
RmsTlsConnectionProvider returns an already-built client; you can’t retrofit headers onto the transport from NICo.
Reimplementing TLS/retry/connection-pooling in NICo would duplicate librms logic.
Reasonable librms options:
Wrap the hyper client with a caller-supplied tower layer (best: generic, no NICo-specific dep).
Add an optional feature that wraps with trace injection (would need a shared/neutral propagation crate — librms probably shouldn’t depend on NICo’s trace-propagation).
Expose build_rms_client / hyper-builder as public API so NICo can wrap before with_origin.