Skip to content

Commit 37250e4

Browse files
authored
perf(sentry): Add optional referrer to query.search for granularity (#44585)
### Summary This adds an optional referrer to split up the discover__search referrer being passed to snuba, since many endpoints call the same query.search function with potentially different behaviour. Other: - Not sure we want to keep the `_sample` behaviour for custom referrers to split the use cases, leaving it here for now to preserve existing behaviour.
1 parent 3289568 commit 37250e4

File tree

5 files changed

+13
-1
lines changed

5 files changed

+13
-1
lines changed

src/sentry/api/endpoints/organization_group_index.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,7 @@ def _search(
175175
query_kwargs.pop("sort_by")
176176
result = inbox_search(**query_kwargs)
177177
else:
178+
query_kwargs["referrer"] = "search.group_index"
178179
result = search.query(**query_kwargs)
179180
return result, query_kwargs
180181

src/sentry/search/base.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,6 @@ def query(
3434
date_from: Optional[datetime] = None,
3535
date_to: Optional[datetime] = None,
3636
max_hits: Optional[int] = None,
37+
referrer: Optional[str] = None,
3738
) -> CursorResult[Group]:
3839
raise NotImplementedError

src/sentry/search/snuba/backend.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,7 @@ def query(
361361
date_from: Optional[datetime] = None,
362362
date_to: Optional[datetime] = None,
363363
max_hits: Optional[int] = None,
364+
referrer: Optional[str] = None,
364365
) -> CursorResult[Group]:
365366
search_filters = search_filters if search_filters is not None else []
366367

@@ -414,6 +415,7 @@ def query(
414415
date_from=date_from,
415416
date_to=date_to,
416417
max_hits=max_hits,
418+
referrer=referrer,
417419
)
418420

419421
def _build_group_queryset(

src/sentry/search/snuba/executors.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ def query(
141141
date_from: Optional[datetime],
142142
date_to: Optional[datetime],
143143
max_hits: Optional[int] = None,
144+
referrer: Optional[str] = None,
144145
) -> CursorResult[Group]:
145146
"""This function runs your actual query and returns the results
146147
We usually return a paginator object, which contains the results and the number of hits"""
@@ -297,6 +298,7 @@ def snuba_search(
297298
offset: int = 0,
298299
get_sample: bool = False,
299300
search_filters: Optional[Sequence[SearchFilter]] = None,
301+
referrer: Optional[str] = None,
300302
) -> Tuple[List[Tuple[int, Any]], int]:
301303
"""Queries Snuba for events with associated Groups based on the input criteria.
302304
@@ -315,7 +317,8 @@ def snuba_search(
315317
).values_list("name", flat=True)
316318
)
317319

318-
referrer = "search_sample" if get_sample else "search"
320+
referrer = referrer or "search"
321+
referrer = f"{referrer}_sample" if get_sample else referrer
319322

320323
snuba_search_filters = [
321324
sf
@@ -465,6 +468,7 @@ def query(
465468
date_from: Optional[datetime],
466469
date_to: Optional[datetime],
467470
max_hits: Optional[int] = None,
471+
referrer: Optional[str] = None,
468472
) -> CursorResult[Group]:
469473
now = timezone.now()
470474
end = None
@@ -641,6 +645,7 @@ def query(
641645
limit=chunk_limit,
642646
offset=offset,
643647
search_filters=search_filters,
648+
referrer=referrer,
644649
)
645650
metrics.timing("snuba.search.num_snuba_results", len(snuba_groups))
646651
count = len(snuba_groups)
@@ -927,6 +932,7 @@ def query(
927932
date_from: Optional[datetime],
928933
date_to: Optional[datetime],
929934
max_hits: Optional[int] = None,
935+
referrer: Optional[str] = None,
930936
) -> CursorResult[Group]:
931937

932938
if not validate_cdc_search_filters(search_filters):

src/sentry/snuba/referrer.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,8 @@ class ReferrerBase(Enum):
462462
REPROCESSING2_START_GROUP_REPROCESSING = "reprocessing2.start_group_reprocessing"
463463
SEARCH_SAMPLE = "search_sample"
464464
SEARCH = "search"
465+
SEARCH_GROUP_INDEX = "search.group_index"
466+
SEARCH_GROUP_INDEX_SAMPLE = "search.group_index_sample"
465467
SERIALIZERS_GROUPSERIALIZERSNUBA__EXECUTE_ERROR_SEEN_STATS_QUERY = (
466468
"serializers.GroupSerializerSnuba._execute_error_seen_stats_query"
467469
)

0 commit comments

Comments
 (0)