diff --git a/src/sentry/models/projectownership.py b/src/sentry/models/projectownership.py index 456d51ae6c77c5..7a410cbc4f8fdd 100644 --- a/src/sentry/models/projectownership.py +++ b/src/sentry/models/projectownership.py @@ -369,14 +369,27 @@ def _matching_ownership_rules( ownership: ProjectOwnership | ProjectCodeOwners, data: Mapping[str, Any], ) -> list[Rule]: - rules = [] - if ownership.schema is not None: - munged_data = Matcher.munge_if_needed(data) - for rule in load_schema(ownership.schema): - if rule.test(data, munged_data): - rules.append(rule) - - return rules + if ownership.schema is None: + return [] + + # "projectownership" or "projectcodeowners" + ownership_type = type(ownership).__name__.lower() + + munged_data = Matcher.munge_if_needed(data) + metrics.distribution( + key="projectownership.matching_ownership_rules.frames", + value=len(munged_data[0]), + tags={"ownership_type": ownership_type}, + ) + + rules = load_schema(ownership.schema) + metrics.distribution( + key="projectownership.matching_ownership_rules.rules", + value=len(rules), + tags={"ownership_type": ownership_type}, + ) + + return [rule for rule in rules if rule.test(data, munged_data)] def process_resource_change(instance, change, **kwargs):