diff --git a/src/sentry/grouping/ingest/grouphash_metadata.py b/src/sentry/grouping/ingest/grouphash_metadata.py index 147651b038da70..8369b7bf298c7c 100644 --- a/src/sentry/grouping/ingest/grouphash_metadata.py +++ b/src/sentry/grouping/ingest/grouphash_metadata.py @@ -41,6 +41,7 @@ TemplateHashingMetadata, ) from sentry.utils import metrics +from sentry.utils.metrics import MutableTags logger = logging.getLogger(__name__) @@ -93,7 +94,7 @@ } -def create_or_update_grouphash_metadata( +def create_or_update_grouphash_metadata_if_needed( event: Event, project: Project, grouphash: GroupHash, @@ -105,7 +106,12 @@ def create_or_update_grouphash_metadata( # we'll have to override the metadata creation date for them. if created: - hash_basis, hashing_metadata = get_hash_basis_and_metadata(event, project, variants) + with metrics.timer( + "grouping.grouphashmetadata.get_hash_basis_and_metadata" + ) as metrics_timer_tags: + hash_basis, hashing_metadata = get_hash_basis_and_metadata( + event, project, variants, metrics_timer_tags + ) GroupHashMetadata.objects.create( grouphash=grouphash, @@ -121,7 +127,10 @@ def create_or_update_grouphash_metadata( def get_hash_basis_and_metadata( - event: Event, project: Project, variants: dict[str, BaseVariant] + event: Event, + project: Project, + variants: dict[str, BaseVariant], + metrics_timer_tags: MutableTags, ) -> tuple[HashBasis, HashingMetadata]: hashing_metadata: HashingMetadata = {} @@ -168,6 +177,8 @@ def get_hash_basis_and_metadata( ) return (HashBasis.UNKNOWN, {}) + metrics_timer_tags["hash_basis"] = hash_basis + # Gather different metadata depending on the grouping method if hash_basis == HashBasis.STACKTRACE: diff --git a/src/sentry/grouping/ingest/hashing.py b/src/sentry/grouping/ingest/hashing.py index 970be08f39fd2d..122957d5f7bdfb 100644 --- a/src/sentry/grouping/ingest/hashing.py +++ b/src/sentry/grouping/ingest/hashing.py @@ -22,7 +22,7 @@ ) from sentry.grouping.ingest.config import is_in_transition from sentry.grouping.ingest.grouphash_metadata import ( - create_or_update_grouphash_metadata, + create_or_update_grouphash_metadata_if_needed, record_grouphash_metadata_metrics, ) from sentry.grouping.variants import BaseVariant @@ -233,10 +233,9 @@ def get_or_create_grouphashes( if options.get("grouping.grouphash_metadata.ingestion_writes_enabled") and features.has( "organizations:grouphash-metadata-creation", project.organization ): - with metrics.timer("grouping.grouphashmetadata.create_or_update_grouphash_metadata"): - create_or_update_grouphash_metadata( - event, project, grouphash, created, grouping_config, variants - ) + create_or_update_grouphash_metadata_if_needed( + event, project, grouphash, created, grouping_config, variants + ) if grouphash.metadata: record_grouphash_metadata_metrics(grouphash.metadata) diff --git a/tests/sentry/grouping/test_grouphash_metadata.py b/tests/sentry/grouping/test_grouphash_metadata.py index ecaccd68d47338..f4d0849e7acd92 100644 --- a/tests/sentry/grouping/test_grouphash_metadata.py +++ b/tests/sentry/grouping/test_grouphash_metadata.py @@ -135,7 +135,7 @@ def _assert_and_snapshot_results( lines: list[str] = [] variants = event.get_grouping_variants() - hash_basis, hashing_metadata = get_hash_basis_and_metadata(event, project, variants) + hash_basis, hashing_metadata = get_hash_basis_and_metadata(event, project, variants, {}) with patch("sentry.grouping.ingest.grouphash_metadata.metrics.incr") as mock_metrics_incr: record_grouphash_metadata_metrics(