Skip to content

Commit 9d6c64b

Browse files
authored
fix(discover): Fix tag facet breakdown for errors (#82930)
Fixes #82149 Make events-facets endpoint dataset aware. Fixes the issue where tag breakdown numbers were funky for errors.
1 parent 316f2fa commit 9d6c64b

File tree

4 files changed

+41
-7
lines changed

4 files changed

+41
-7
lines changed

src/sentry/api/endpoints/organization_events_facets.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
from sentry.api.paginator import GenericOffsetPaginator
1313
from sentry.api.utils import handle_query_errors, update_snuba_params_with_timestamp
1414
from sentry.search.utils import DEVICE_CLASS
15-
from sentry.snuba import discover
1615

1716

1817
class _TopValue(TypedDict):
@@ -43,10 +42,12 @@ def get(self, request: Request, organization) -> Response:
4342

4443
update_snuba_params_with_timestamp(request, snuba_params, timestamp_key="traceTimestamp")
4544

45+
dataset = self.get_dataset(request)
46+
4647
def data_fn(offset, limit):
4748
with sentry_sdk.start_span(op="discover.endpoint", name="discover_query"):
4849
with handle_query_errors():
49-
facets = discover.get_facets(
50+
facets = dataset.get_facets(
5051
query=request.GET.get("query"),
5152
snuba_params=snuba_params,
5253
referrer="api.organization-events-facets.top-tags",

src/sentry/snuba/discover.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -633,6 +633,7 @@ def get_facets(
633633
referrer: str,
634634
per_page: int | None = TOP_KEYS_DEFAULT_LIMIT,
635635
cursor: int | None = 0,
636+
dataset: Dataset | None = Dataset.Discover,
636637
) -> list[FacetResult]:
637638
"""
638639
High-level API for getting 'facet map' results.
@@ -648,12 +649,18 @@ def get_facets(
648649
cursor - The number of records to skip.
649650
"""
650651

652+
assert dataset in [
653+
Dataset.Discover,
654+
Dataset.Transactions,
655+
Dataset.Events,
656+
], "A dataset is required to query discover"
657+
651658
sample = len(snuba_params.project_ids) > 2
652659
fetch_projects = len(snuba_params.project_ids) > 1
653660

654661
with sentry_sdk.start_span(op="discover.discover", name="facets.frequent_tags"):
655662
key_name_builder = DiscoverQueryBuilder(
656-
Dataset.Discover,
663+
dataset,
657664
params={},
658665
snuba_params=snuba_params,
659666
query=query,
@@ -699,7 +706,7 @@ def get_facets(
699706
if fetch_projects and cursor == 0:
700707
with sentry_sdk.start_span(op="discover.discover", name="facets.projects"):
701708
project_value_builder = DiscoverQueryBuilder(
702-
Dataset.Discover,
709+
dataset,
703710
params={},
704711
snuba_params=snuba_params,
705712
query=query,
@@ -736,7 +743,7 @@ def get_facets(
736743
for tag_name in individual_tags:
737744
tag = f"tags[{tag_name}]"
738745
tag_value_builder = DiscoverQueryBuilder(
739-
Dataset.Discover,
746+
dataset,
740747
params={},
741748
snuba_params=snuba_params,
742749
query=query,
@@ -758,7 +765,7 @@ def get_facets(
758765
if aggregate_tags:
759766
with sentry_sdk.start_span(op="discover.discover", name="facets.aggregate_tags"):
760767
aggregate_value_builder = DiscoverQueryBuilder(
761-
Dataset.Discover,
768+
dataset,
762769
params={},
763770
snuba_params=snuba_params,
764771
query=(query if query is not None else "")

src/sentry/snuba/errors.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@
1717
)
1818
from sentry.search.events.types import EventsResponse, QueryBuilderConfig, SnubaParams
1919
from sentry.snuba.dataset import Dataset
20-
from sentry.snuba.discover import OTHER_KEY, create_result_key, transform_tips, zerofill
20+
from sentry.snuba.discover import OTHER_KEY, TOP_KEYS_DEFAULT_LIMIT, FacetResult, create_result_key
21+
from sentry.snuba.discover import get_facets as get_discover_facets
22+
from sentry.snuba.discover import transform_tips, zerofill
2123
from sentry.snuba.metrics.extraction import MetricSpecType
2224
from sentry.snuba.query_sources import QuerySource
2325
from sentry.utils.snuba import SnubaTSResult, bulk_snuba_queries
@@ -362,3 +364,14 @@ def top_events_timeseries(
362364
)
363365

364366
return top_events_results
367+
368+
369+
def get_facets(
370+
query: str | None,
371+
snuba_params: SnubaParams,
372+
referrer: str,
373+
per_page: int | None = TOP_KEYS_DEFAULT_LIMIT,
374+
cursor: int | None = 0,
375+
dataset: Dataset | None = Dataset.Events,
376+
) -> list[FacetResult]:
377+
return get_discover_facets(query, snuba_params, referrer, per_page, cursor, Dataset.Events)

src/sentry/snuba/transactions.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,3 +157,16 @@ def top_events_timeseries(
157157
dataset=Dataset.Transactions,
158158
query_source=query_source,
159159
)
160+
161+
162+
def get_facets(
163+
query: str | None,
164+
snuba_params: SnubaParams,
165+
referrer: str,
166+
per_page: int | None = discover.TOP_KEYS_DEFAULT_LIMIT,
167+
cursor: int | None = 0,
168+
dataset: Dataset | None = Dataset.Transactions,
169+
) -> list[discover.FacetResult]:
170+
return discover.get_facets(
171+
query, snuba_params, referrer, per_page, cursor, Dataset.Transactions
172+
)

0 commit comments

Comments
 (0)