Browse Source

ref: bump sentry-kafka-schemas to 0.1.37 (#60933)

Sentry Bot 1 year ago
parent
commit
f6b80b3d85

+ 2 - 2
requirements-base.txt

@@ -61,8 +61,8 @@ rfc3339-validator>=0.1.2
 rfc3986-validator>=0.1.1
 # [end] jsonschema format validators
 sentry-arroyo>=2.14.23
-sentry-kafka-schemas>=0.1.33
-sentry-kafka-schemas>=0.1.34
+sentry-kafka-schemas>=0.1.37
+sentry-kafka-schemas>=0.1.37
 sentry-redis-tools>=0.1.7
 sentry-relay>=0.8.35
 sentry-sdk>=1.38.0

+ 1 - 1
requirements-dev-frozen.txt

@@ -172,7 +172,7 @@ sentry-arroyo==2.14.23
 sentry-cli==2.16.0
 sentry-forked-django-stubs==4.2.6.post3
 sentry-forked-djangorestframework-stubs==3.14.4.post2
-sentry-kafka-schemas==0.1.34
+sentry-kafka-schemas==0.1.37
 sentry-redis-tools==0.1.7
 sentry-relay==0.8.35
 sentry-sdk==1.38.0

+ 1 - 1
requirements-frozen.txt

@@ -115,7 +115,7 @@ rfc3986-validator==0.1.1
 rsa==4.8
 s3transfer==0.6.1
 sentry-arroyo==2.14.23
-sentry-kafka-schemas==0.1.34
+sentry-kafka-schemas==0.1.37
 sentry-redis-tools==0.1.7
 sentry-relay==0.8.35
 sentry-sdk==1.38.0

+ 21 - 26
src/sentry/spans/consumers/process/factory.py

@@ -3,7 +3,7 @@ from __future__ import annotations
 import random
 import uuid
 from datetime import datetime, timezone
-from typing import Any, Mapping, Optional, cast
+from typing import Any, Mapping, Optional
 
 import sentry_sdk
 from arroyo.backends.kafka import KafkaPayload, KafkaProducer, build_kafka_configuration
@@ -14,7 +14,7 @@ from django.conf import settings
 from sentry_kafka_schemas import get_codec
 from sentry_kafka_schemas.codecs import Codec, ValidationError
 from sentry_kafka_schemas.schema_types.ingest_spans_v1 import IngestSpanMessage
-from sentry_kafka_schemas.schema_types.snuba_spans_v1 import SpanEvent, _SentryExtractedTags
+from sentry_kafka_schemas.schema_types.snuba_spans_v1 import SpanEvent
 
 from sentry.spans.grouping.api import load_span_grouping_config
 from sentry.spans.grouping.strategy.base import Span
@@ -44,42 +44,34 @@ def _process_relay_span_v1(relay_span: Mapping[str, Any]) -> SpanEvent:
         segment_id=relay_span.get("segment_id", "0"),
         span_id=relay_span.get("span_id", "0"),
         start_timestamp_ms=int(start_timestamp.timestamp() * 1e3),
-        trace_id=uuid.UUID(relay_span["trace_id"]).hex,
+        trace_id=_format_event_id(relay_span["trace_id"]),
     )
 
-    if value := relay_span.get("description"):
-        snuba_span["description"] = value
+    for key in {"description", "tags", "measurements", "sentry_tags"}:
+        if value := relay_span.get(key):
+            snuba_span[key] = value  # type: ignore
 
-    if value := relay_span.get("tags"):
-        snuba_span["tags"] = value
+    for key in {"event_id", "profile_id"}:
+        if value := format_event_id(relay_span, key=key):
+            snuba_span[key] = value  # type: ignore
 
-    if value := _format_event_id(relay_span, key="event_id"):
-        snuba_span["event_id"] = value
-
-    if value := _format_event_id(relay_span, key="profile_id"):
-        snuba_span["profile_id"] = value
-
-    snuba_span["sentry_tags"] = cast(
-        _SentryExtractedTags,
-        relay_span.get("sentry_tags", {}),
-    )
-
-    _process_group_raw(snuba_span, snuba_span["sentry_tags"].get("transaction", ""))
+    _process_group_raw(snuba_span)
 
     return snuba_span
 
 
-def _process_group_raw(snuba_span: SpanEvent, transaction: str) -> None:
+def _process_group_raw(snuba_span: SpanEvent) -> None:
     grouping_config = load_span_grouping_config()
+    sentry_tags = snuba_span.get("sentry_tags", {})
 
     if snuba_span["is_segment"]:
         group_raw = grouping_config.strategy.get_transaction_span_group(
-            {"transaction": transaction},
+            {"transaction": sentry_tags.get("transaction", "")},
         )
     else:
         # Build a span with only necessary values filled.
         span = Span(
-            op=snuba_span.get("sentry_tags", {}).get("op", ""),
+            op=sentry_tags.get("op", ""),
             description=snuba_span.get("description", ""),
             fingerprint=None,
             trace_id="",
@@ -101,13 +93,16 @@ def _process_group_raw(snuba_span: SpanEvent, transaction: str) -> None:
         metrics.incr("spans.invalid_group_raw")
 
 
-def _format_event_id(payload: Mapping[str, Any], key="event_id") -> Optional[str]:
-    event_id = payload.get(key)
-    if event_id:
-        return uuid.UUID(event_id).hex
+def format_event_id(payload: Mapping[str, Any], key: str) -> Optional[str]:
+    if event_id := payload.get(key):
+        return _format_event_id(event_id)
     return None
 
 
+def _format_event_id(event_id: str) -> str:
+    return uuid.UUID(event_id).hex
+
+
 def _deserialize_payload(payload: bytes) -> Mapping[str, Any]:
     return INGEST_SPAN_SCHEMA.decode(payload)