Open
Description
To increase the chance of capturing complete traces when users return a new sample rate tracesSampler in backend services, we propagate the random value used by the SDK for computing the sampling decision instead of creating a new random value in every service. Therefore, across a trace every SDK uses the same random value.
As the Rust SDK is a backend SDK and we currently don't capture any traces for outgoing network requests, we only need to conform to the spec when it comes to the following points:
- read the incoming
sample_rand
or create one - make a sampling decision based on the
sample_rand
- send the
sample_rand
as part of the DSC in envelopes - update
traces_sampler
to pass theparent_sample_rate
A prerequisite to implement this feature is to support Dynamic Sampling via creating, handling and sending the Dynamic Sampling Context, which is tracked here: #741