sentry-rust
sentry-rust copied to clipboard
[Dynamic Sampling] Sampling Seed Propagation
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_randor create one - make a sampling decision based on the
sample_rand - send the
sample_randas part of the DSC in envelopes - update
traces_samplerto 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: https://github.com/getsentry/sentry-rust/issues/741