-
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
Description
Lots of conversation about how both our server-side code and the Python SDK handle marking frames in or out of app has occurred in #79482, getsentry/sentry-python#3682, getsentry/sentry-python#3671, getsentry/sentry-python#3672, and #79357. This issue supersedes them all, and includes our final plan.
The problem:
There are currently four ways the in_app value for a given Python frame can be set:
- By the user in the SDK, using the
in_app_includeandin_app_excludeoptions - By the SDK itself, based on logic here
- By the user, using custom stacktrace rules
- By the server, based on logic here and here
The problem is that the precedence between these ways isn't always honored the way it should be. (Specifically, our server-side values can override values the user has set using the SDK, which means that those options are in some sense "broken.") Also, there's duplication of logic in terms of the automatically set values, between the SDK and the server.
The solution:
Through discussion in the above-linked issues, the agreed-upon solution is:
- The SDK will stop automatically setting values, and only set values based on the two
in_appoptions set by the user. - All logic for automatically setting values will move to the server.
- The server will allow server-side stacktrace rules to override SDK-set values (this matches the way fingerprinting rules work), but won't allow our internal logic to override values from the SDK.
This means that the final precedence order will be (highest to lowest):
- Server-side stacktrace rules set by the user
- The SDK
in_app_includeoption - The SDK
in_app_excludeoption - Internal sever-side rules set in the grouping config
- A default value of
falseif the value hasn't been set by any of the above
Basically, values set by the user beat values set by us, and within that, server values beat SDK values.
Tasks:
- Incorporate any internal logic from the SDK in the server-side grouping config
- Remove internal logic from the SDK Remove automatic
in_appdetection logic sentry-python#3945 - Ensure that grouping config values don't override SDK-set values, since now by definition they will be coming from the user
- Document this somewhere? Probably should be in both the SDK docs and the stacktrace rule docs (which should link to one another if they don't already).