Description
What
Came up in #3581 (comment)
It does not matter whether a transaction gets sampled or not, they still require the same amount of resources - i.e. memory.
How
We could expand on this on the NoOp. Instead of a NoOpTransaction
singleton we could pass around something like a SampledTransaction
that are functionally NoOp but hold the data required to provide a client report - i.e. span count. I guess the same could work for spans? That way we'd get rid of all the data we know will get discarded in the end anyway.
Context
We introduced the NoOp transaction with the SDK disabled here: https://github.com/getsentry/sentry-dotnet/pull/3581/files and we could expand on this.
When starting a transaction
it either has its sampling decision already set or it goes through the TracesSampler
(if provided)
sentry-dotnet/src/Sentry/Internal/Hub.cs
Lines 149 to 153 in 12c7d7c
or it gets it's sampling state set randomly
sentry-dotnet/src/Sentry/Internal/Hub.cs
Line 162 in 12c7d7c
So we know right from the beginning if a transaction ends up in a client report or not.
Metadata
Metadata
Assignees
Type
Projects
Status
Status