Browse Source

Add CapMan metadata as tags to Sentry spans (#73331)

https://getsentry.atlassian.net/browse/SNS-2798

Allocation policies are our mechanism for doing traffic management for
Snuba queries. Currently, the result of applying allocation policies in
the internal API is simply accept/reject/throttle. In a [previous
PR](https://github.com/getsentry/snuba/pull/6045), capacity management
metadata are sent over to Sentry within the payload. We want to reflect
the quota metadata in Sentry spans as well. This PR adds metadata as
tags to Sentry spans.

Co-authored-by: Rachel Chen <rachelchen@PL6VFX9HP4.local>
xurui-c 4 days ago
parent
commit
bb8a74e922
1 changed files with 8 additions and 0 deletions
  1. 8 0
      src/sentry/utils/snuba.py

+ 8 - 0
src/sentry/utils/snuba.py

@@ -1032,6 +1032,14 @@ def _bulk_snuba_query(
                 raise SnubaError("Failed to parse snuba error response")
             raise UnexpectedResponseError(f"Could not decode JSON response: {response.data!r}")
 
+        if "quota_allowance" in body and body["quota_allowance"]:
+            quota_allowance_summary = body["quota_allowance"]["summary"]
+            span.set_tag("threads_used", quota_allowance_summary["threads_used"])
+            for k, v in quota_allowance_summary["throttled_by"].items():
+                span.set_tag(k, v)
+            for k, v in quota_allowance_summary["rejected_by"].items():
+                span.set_tag(k, v)
+
         if response.status != 200:
             _log_request_query(snuba_param_list[index][0])
             metrics.incr(