From ffa5096f993e2f5260587692d1b0806f29a124d1 Mon Sep 17 00:00:00 2001 From: Simon Hellmayr Date: Tue, 12 May 2026 09:14:22 +0200 Subject: [PATCH] chore(dynamic-sampling): add status for snuba timeouts --- src/sentry/dynamic_sampling/per_org/tasks/telemetry.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/sentry/dynamic_sampling/per_org/tasks/telemetry.py b/src/sentry/dynamic_sampling/per_org/tasks/telemetry.py index f5d2b377970bbd..ff8425f0b56bcc 100644 --- a/src/sentry/dynamic_sampling/per_org/tasks/telemetry.py +++ b/src/sentry/dynamic_sampling/per_org/tasks/telemetry.py @@ -14,6 +14,7 @@ metrics_sample_rate, ) from sentry.utils import metrics +from sentry.utils.snuba_rpc import SnubaRPCError F = TypeVar("F", bound=Callable[..., object]) @@ -38,6 +39,7 @@ class TelemetryStatus(StrEnum): ORG_NOT_FOUND = "org_not_found" ROLLOUT_DISABLED = "rollout_disabled" ROLLOUT_EXCLUDED = "rollout_excluded" + SNUBA_TIMEOUT = "snuba_timeout" class DynamicSamplingException(Exception): @@ -112,6 +114,10 @@ def wrapper(*args: object, **kwargs: object) -> object: result = func(*args, **kwargs) except DynamicSamplingException as exc: result = exc.status + except SnubaRPCError as exc: + sentry_sdk.capture_exception(exc) + emit_status(status_metric, TelemetryStatus.SNUBA_TIMEOUT) + raise except Exception as exc: sentry_sdk.capture_exception(exc) emit_status(status_metric, TelemetryStatus.FAILED)