sentry-rust icon indicating copy to clipboard operation
sentry-rust copied to clipboard

[Dynamic Sampling] Sampling Seed Propagation

Open lcian opened this issue 9 months ago • 0 comments

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.

Spec

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 the parent_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

lcian avatar Feb 03 '25 19:02 lcian