Skip to content

Commit b80f847

Browse files
authored
fix(spans): Clarify signatures in segment enrichment (#97759)
Clarifies where the `hash` attribute is added during enrichment and renames breakdown calculation back to its original name for clarity.
1 parent ec36049 commit b80f847

File tree

3 files changed

+7
-20
lines changed

3 files changed

+7
-20
lines changed

src/sentry/spans/consumers/process_segments/enrichment.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ class Span(SegmentSpan, total=True):
5454

5555
sentry_tags: dict[str, Any] # type: ignore[misc] # XXX: fix w/ TypedDict extra_items once available
5656

57-
# XXX: unclear where this comes from as it's not from enrichment!
57+
# Added by `SpanGroupingResults.write_to_spans` in `_enrich_spans`
5858
hash: NotRequired[str]
5959

6060

@@ -221,8 +221,7 @@ def _us(timestamp: float) -> int:
221221
return int(timestamp * 1_000_000)
222222

223223

224-
def segment_span_measurement_updates(
225-
segment: Span,
224+
def compute_breakdowns(
226225
spans: list[SegmentSpan],
227226
breakdowns_config: dict[str, dict[str, Any]],
228227
) -> dict[str, MeasurementValue]:

src/sentry/spans/consumers/process_segments/message.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,7 @@
2424
from sentry.receivers.features import record_generic_event_processed
2525
from sentry.receivers.onboarding import record_release_received
2626
from sentry.signals import first_insight_span_received, first_transaction_received
27-
from sentry.spans.consumers.process_segments.enrichment import (
28-
Enricher,
29-
Span,
30-
segment_span_measurement_updates,
31-
)
27+
from sentry.spans.consumers.process_segments.enrichment import Enricher, Span, compute_breakdowns
3228
from sentry.spans.grouping.api import load_span_grouping_config
3329
from sentry.utils import metrics
3430
from sentry.utils.dates import to_datetime
@@ -56,11 +52,7 @@ def process_segment(unprocessed_spans: list[SegmentSpan], skip_produce: bool = F
5652
return []
5753

5854
segment_span.setdefault("measurements", {}).update(
59-
segment_span_measurement_updates(
60-
segment_span,
61-
unprocessed_spans,
62-
project.get_option("sentry:breakdowns"),
63-
)
55+
compute_breakdowns(unprocessed_spans, project.get_option("sentry:breakdowns"))
6456
)
6557
_create_models(segment_span, project)
6658
_detect_performance_problems(segment_span, spans, project)

tests/sentry/spans/consumers/process_segments/test_enrichment.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,4 @@
1-
from sentry.spans.consumers.process_segments.enrichment import (
2-
Enricher,
3-
segment_span_measurement_updates,
4-
)
1+
from sentry.spans.consumers.process_segments.enrichment import Enricher, compute_breakdowns
52
from tests.sentry.spans.consumers.process import build_mock_span
63

74
# Tests ported from Relay
@@ -367,9 +364,8 @@ def test_emit_ops_breakdown() -> None:
367364
}
368365

369366
# Compute breakdowns for the segment span
370-
enriched_segment, _ = Enricher.enrich_spans(spans)
371-
assert enriched_segment is not None
372-
updates = segment_span_measurement_updates(enriched_segment, spans, breakdowns_config)
367+
_ = Enricher.enrich_spans(spans)
368+
updates = compute_breakdowns(spans, breakdowns_config)
373369

374370
assert updates["span_ops.ops.http"]["value"] == 3600000.0
375371
assert updates["span_ops.ops.db"]["value"] == 7200000.0

0 commit comments

Comments
 (0)