diff --git a/src/sentry/api/endpoints/organization_traces.py b/src/sentry/api/endpoints/organization_traces.py index d04ad8ae31d3ec..b1f3fded4cbf2b 100644 --- a/src/sentry/api/endpoints/organization_traces.py +++ b/src/sentry/api/endpoints/organization_traces.py @@ -28,7 +28,7 @@ SpansIndexedQueryBuilder, TimeseriesSpanIndexedQueryBuilder, ) -from sentry.search.events.constants import TIMEOUT_SPAN_ERROR_MESSAGE +from sentry.search.events.constants import TIMEOUT_SPAN_ERROR_MESSAGE, UNCLASSIFIED_SPAN_GROUP from sentry.search.events.types import ParamsType, QueryBuilderConfig, SnubaParams, WhereType from sentry.sentry_metrics.querying.samples_list import SpanKey, get_sample_list_executor_cls from sentry.services.hybrid_cloud.organization import RpcOrganization @@ -854,11 +854,18 @@ def get_traces_breakdown_projects_query( ) -> QueryBuilder: trace_ids_str = ",".join(trace_ids) trace_ids_condition = f"trace:[{trace_ids_str}]" + query = " ".join( + [ + "is_transaction:1", # service entry spans + f"group:{UNCLASSIFIED_SPAN_GROUP}", # service entry spans do not have a group + trace_ids_condition, + ], + ) return SpansIndexedQueryBuilder( Dataset.SpansIndexed, params, snuba_params=snuba_params, - query=f"is_transaction:1 {trace_ids_condition}", + query=query, selected_columns=[ "trace", "project", diff --git a/src/sentry/search/events/constants.py b/src/sentry/search/events/constants.py index 9dd490b5291cc9..47c04f803f987f 100644 --- a/src/sentry/search/events/constants.py +++ b/src/sentry/search/events/constants.py @@ -56,6 +56,9 @@ SPAN_DESCRIPTION = "span.description" SPAN_STATUS = "span.status" +# Not all spans get a group assigned to it. Unassigned ones has a default of 0. +UNCLASSIFIED_SPAN_GROUP = "00" + class ThresholdDict(TypedDict): poor: float diff --git a/src/sentry/sentry_metrics/querying/samples_list.py b/src/sentry/sentry_metrics/querying/samples_list.py index bb3d229564c9b1..5307a39b6978b3 100644 --- a/src/sentry/sentry_metrics/querying/samples_list.py +++ b/src/sentry/sentry_metrics/querying/samples_list.py @@ -14,6 +14,7 @@ QueryBuilder, SpansIndexedQueryBuilder, ) +from sentry.search.events.constants import UNCLASSIFIED_SPAN_GROUP from sentry.search.events.types import ParamsType, QueryBuilderConfig, SelectType, SnubaParams from sentry.snuba.dataset import Dataset from sentry.snuba.metrics.naming_layer.mri import ( @@ -277,7 +278,7 @@ def get_matching_spans_from_traces( return [ SpanKey( - group="00", # all segments have a group of `00` currently + group=UNCLASSIFIED_SPAN_GROUP, timestamp=row["timestamp"], span_id=row["span_id"], )