Skip to content

Commit d6959a4

Browse files
authored
ref(grouping): Split getting grouping info into new and legacy functions (#101272)
This is a small refactor to split the old and new behavior into two separate functions rather than relying on a `use_legacy_format` parameter. This should keep things a little simpler as we continue to make changes to the format of grouping info.
1 parent 1f1a162 commit d6959a4

File tree

7 files changed

+21
-20
lines changed

7 files changed

+21
-20
lines changed

src/sentry/grouping/grouping_info.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ def get_grouping_info(
2020

2121
variants = event.get_grouping_variants(grouping_config, normalize_stacktraces=True)
2222

23-
grouping_info = get_grouping_info_from_variants(variants, use_legacy_format=False)
23+
grouping_info = get_grouping_info_from_variants(variants)
2424

2525
# One place we use this info is in the grouping info section of the event details page, and for
2626
# that we recalculate hashes/variants on the fly since we don't store the variants as part of
@@ -116,21 +116,22 @@ def _get_new_description(variant: BaseVariant) -> str:
116116
return " ".join(description_parts)
117117

118118

119+
# TODO: Switch Seer stacktrace string to use variants directly, and then this can go away
120+
def get_grouping_info_from_variants_legacy(
121+
variants: dict[str, BaseVariant],
122+
) -> dict[str, dict[str, Any]]:
123+
return {key: {"key": key, **variant.as_dict()} for key, variant in variants.items()}
124+
125+
119126
def get_grouping_info_from_variants(
120127
variants: dict[str, BaseVariant],
121-
# Shim to keep the output (which we also use for getting the Seer stacktrace string) stable
122-
# until we can switch `get_stacktrace_string` to use variants directly
123-
use_legacy_format: bool = True,
124128
) -> dict[str, dict[str, Any]]:
125129
"""
126130
Given a dictionary of variant objects, create and return a copy of the dictionary in which each
127131
variant object value has been transformed into an equivalent dictionary value, which knows the
128132
key under which it lives.
129133
"""
130134

131-
if use_legacy_format:
132-
return {key: {"key": key, **variant.as_dict()} for key, variant in variants.items()}
133-
134135
return {
135136
# Overwrite the description with a new, improved version
136137
variant.key: {

src/sentry/grouping/ingest/seer.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
from sentry import options
1010
from sentry import ratelimits as ratelimiter
1111
from sentry.conf.server import SEER_SIMILARITY_MODEL_VERSION
12-
from sentry.grouping.grouping_info import get_grouping_info_from_variants
12+
from sentry.grouping.grouping_info import get_grouping_info_from_variants_legacy
1313
from sentry.grouping.ingest.grouphash_metadata import (
1414
check_grouphashes_for_positive_fingerprint_match,
1515
)
@@ -240,7 +240,7 @@ def _circuit_breaker_broken(event: Event, project: Project) -> bool:
240240

241241

242242
def _has_empty_stacktrace_string(event: Event, variants: dict[str, BaseVariant]) -> bool:
243-
stacktrace_string = get_stacktrace_string(get_grouping_info_from_variants(variants))
243+
stacktrace_string = get_stacktrace_string(get_grouping_info_from_variants_legacy(variants))
244244
if not stacktrace_string:
245245
if stacktrace_string == "":
246246
record_did_call_seer_metric(event, call_made=False, blocker="empty-stacktrace-string")
@@ -268,7 +268,7 @@ def get_seer_similar_issues(
268268

269269
stacktrace_string = event.data.get(
270270
"stacktrace_string",
271-
get_stacktrace_string(get_grouping_info_from_variants(variants)),
271+
get_stacktrace_string(get_grouping_info_from_variants_legacy(variants)),
272272
)
273273

274274
request_data: SimilarIssuesEmbeddingsRequest = {

src/sentry/issues/endpoints/group_similar_issues_embeddings.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from sentry.api.api_publish_status import ApiPublishStatus
1313
from sentry.api.base import region_silo_endpoint
1414
from sentry.api.serializers import serialize
15-
from sentry.grouping.grouping_info import get_grouping_info_from_variants
15+
from sentry.grouping.grouping_info import get_grouping_info_from_variants_legacy
1616
from sentry.issues.endpoints.bases.group import GroupEndpoint
1717
from sentry.models.group import Group
1818
from sentry.models.grouphash import GroupHash
@@ -91,7 +91,7 @@ def get(self, request: Request, group: Group) -> Response:
9191
if not has_too_many_contributing_frames(
9292
latest_event, variants, ReferrerOptions.SIMILAR_ISSUES_TAB
9393
):
94-
grouping_info = get_grouping_info_from_variants(variants)
94+
grouping_info = get_grouping_info_from_variants_legacy(variants)
9595
try:
9696
stacktrace_string = get_stacktrace_string(grouping_info)
9797
except Exception:

src/sentry/tasks/embeddings_grouping/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
from sentry import nodestore, options
1515
from sentry.conf.server import SEER_SIMILARITY_MODEL_VERSION
16-
from sentry.grouping.grouping_info import get_grouping_info_from_variants
16+
from sentry.grouping.grouping_info import get_grouping_info_from_variants_legacy
1717
from sentry.grouping.grouptype import ErrorGroupType
1818
from sentry.models.group import Group, GroupStatus
1919
from sentry.models.project import Project
@@ -418,7 +418,7 @@ def get_events_from_nodestore(
418418
invalid_event_reasons["excess_frames"] += 1
419419
continue
420420

421-
grouping_info = get_grouping_info_from_variants(variants)
421+
grouping_info = get_grouping_info_from_variants_legacy(variants)
422422
stacktrace_string = get_stacktrace_string(grouping_info)
423423

424424
if not stacktrace_string:

tests/sentry/grouping/seer_similarity/test_get_seer_similar_issues.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from sentry import options
55
from sentry.conf.server import DEFAULT_GROUPING_CONFIG
6-
from sentry.grouping.grouping_info import get_grouping_info_from_variants
6+
from sentry.grouping.grouping_info import get_grouping_info_from_variants_legacy
77
from sentry.grouping.ingest.grouphash_metadata import create_or_update_grouphash_metadata_if_needed
88
from sentry.grouping.ingest.seer import get_seer_similar_issues
99
from sentry.grouping.variants import BaseVariant
@@ -59,7 +59,7 @@ def create_new_event(
5959
)
6060

6161
if stacktrace_string is None:
62-
stacktrace_string = get_stacktrace_string(get_grouping_info_from_variants(variants))
62+
stacktrace_string = get_stacktrace_string(get_grouping_info_from_variants_legacy(variants))
6363
event.data["stacktrace_string"] = stacktrace_string
6464

6565
return (event, variants, grouphash, stacktrace_string)

tests/sentry/grouping/seer_similarity/test_seer_eligibility.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from unittest.mock import MagicMock, patch
44
from uuid import uuid1
55

6-
from sentry.grouping.grouping_info import get_grouping_info_from_variants
6+
from sentry.grouping.grouping_info import get_grouping_info_from_variants_legacy
77
from sentry.grouping.ingest.seer import (
88
_event_content_is_seer_eligible,
99
should_call_seer_for_grouping,
@@ -49,7 +49,7 @@ def setUp(self) -> None:
4949
self.variants = self.event.get_grouping_variants()
5050
self.primary_hashes = self.event.get_hashes()
5151
self.stacktrace_string = get_stacktrace_string(
52-
get_grouping_info_from_variants(self.variants)
52+
get_grouping_info_from_variants_legacy(self.variants)
5353
)
5454
self.event_grouphash = GroupHash.objects.create(project_id=self.project.id, hash="908415")
5555

@@ -233,7 +233,7 @@ def test_obeys_empty_stacktrace_string_check(
233233
empty_frame_variants = empty_frame_event.get_grouping_variants()
234234
empty_frame_grouphash = GroupHash(project_id=self.project.id, hash="415908")
235235
empty_frame_stacktrace_string = get_stacktrace_string(
236-
get_grouping_info_from_variants(empty_frame_variants)
236+
get_grouping_info_from_variants_legacy(empty_frame_variants)
237237
)
238238

239239
assert self.stacktrace_string != ""

tests/sentry/grouping/test_grouping_info.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
def test_grouping_info(
1717
variants: dict[str, BaseVariant], create_snapshot: InstaSnapshotter, **kwargs: Any
1818
) -> None:
19-
grouping_info = get_grouping_info_from_variants(variants, use_legacy_format=False)
19+
grouping_info = get_grouping_info_from_variants(variants)
2020
create_snapshot(to_json(grouping_info, pretty_print=True))
2121

2222

0 commit comments

Comments
 (0)