fix(browser): Ensure suppressTracing
does not leak when async
#16545
+83
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This changes the behavior of
suppressTracing
to be less problematic (or, problematic in a different way).Today, because in the browser we do not have async context isolation, there is only a single shared top scope. Because of this, if you have code like this:
The span2 will also be suppressed, because
suppressTracing
forks the scope and sets data on it to ensure spans are not recorded. This is problematic as that will result in completely unrelated spans, e.g. pageload/navigation spans, being suppressed while e.g. an ongoing fetch call that is suppressed happens.This PR changes this to instead only suppress tracing synchronously in the browser. This obviously is also not really ideal and can lead to things not being suppressed, but it feels like the better tradeoff for now.