diff --git a/src/sentry/scm/private/helpers.py b/src/sentry/scm/private/helpers.py index 1ca94c1a9f9e..152824d79a06 100644 --- a/src/sentry/scm/private/helpers.py +++ b/src/sentry/scm/private/helpers.py @@ -112,15 +112,16 @@ def exec_provider_fn[P: Provider, T]( if provider.is_rate_limited(referrer): raise SCMCodedError(provider, referrer, code="rate_limit_exceeded") + provider_name = provider.__class__.__name__ + try: result = provider_fn() - record_count( - "sentry.scm.actions.success_by_provider", 1, {"provider": provider.__class__.__name__} - ) + record_count("sentry.scm.actions.success_by_provider", 1, {"provider": provider_name}) record_count("sentry.scm.actions.success_by_referrer", 1, {"referrer": referrer}) return result except SCMError: raise except Exception as e: - record_count("sentry.scm.actions.failed", 1, {}) + record_count("sentry.scm.actions.failed_by_provider", 1, {"provider": provider_name}) + record_count("sentry.scm.actions.failed_by_referrer", 1, {"referrer": referrer}) raise SCMUnhandledException from e diff --git a/tests/sentry/scm/unit/test_scm_actions.py b/tests/sentry/scm/unit/test_scm_actions.py index cbbb2b231f0b..322cd3f05e47 100644 --- a/tests/sentry/scm/unit/test_scm_actions.py +++ b/tests/sentry/scm/unit/test_scm_actions.py @@ -751,7 +751,10 @@ def get_branch(self, branch, request_options=None): assert isinstance(scm, GetBranchProtocol) scm.get_branch(branch="main") - assert metrics == [("sentry.scm.actions.failed", 1, {})] + assert metrics == [ + ("sentry.scm.actions.failed_by_provider", 1, {"provider": ExplodingProvider.__name__}), + ("sentry.scm.actions.failed_by_referrer", 1, {"referrer": "shared"}), + ] def test_exec_passes_custom_referrer():