Open HazAT opened 1 year ago
So I am fine with doing something quick right now to unblock replay without needing majors. But eventually, we should solve this properly in majors by decoupling Propagation from start_transaction
and having a separate well-defined abstraction as discussed with @cleptric and @AbhiPrasad ealrier.
@sl0thentr0py full ack - eventually, with Starfish and potentially having just Spans, we are going to revamp this and make it way more straightforward and also internally less complex.
(consider enableTracing)
I recall proposing this earlier when it was being introduced. My understanding is that today this means tracesSampleRate=1.0 which means turning that on by itself will cause someone to burn through their quota quickly. Does it mean the documentation would need to be:
enableTracing=true;
tracesSampleRate=0
?
@bruno-garcia yes or a new flag - or just tracing origin setting 🙃
For the Replay 'Connect to Backend Errors' feature to light up, we need https://github.com/getsentry/team-webplatform-meta/issues/45 which doesn't depend on this work. Through https://github.com/getsentry/team-webplatform-meta/issues/45 we at least get errors on backend errors when Performance monitoring is turned on.
Project Board
See our project board to track this initiative across all SDKs
Description
Internal Notion Page: https://www.notion.so/sentry/Tracing-without-performance-efab307eb7f64e71a04f09dc72722530
To always have access to a trace and span ID, add a new internal
PropagationContext
property to the scope, an object holding atraceId
andspanId
and an optionaldynamicSamplingContext
.Populate the
traceId
andspanId
with valid, random IDs on construction.You may update the
traceId
anddynamicSamplingContext
from the request headers during an incoming request or if the process was exposed to aSENTRY_TRACE
and/orSENTRY_BAGGAGE
environment variable if performance is disabled.The Dynamic Sampling Context should be lazily constructed once needed, using a new
fromOptions
function that constructs the DSC based on the client options if performance is disabled.When
captureEvent
is called, you may use these values on the scope as a fallback to construct thetrace
context and envelope header item if no transaction exists in the SDK.For outgoing HTTP requests, use the values in the scope as a fallback if no transaction is present. The
sentry-trace
will contain a trailing-0
indicating an unsampled transaction.