diff --git a/src/sentry/grouping/fingerprinting/utils.py b/src/sentry/grouping/fingerprinting/utils.py index 2fe544bbe5d820..9d68883942635a 100644 --- a/src/sentry/grouping/fingerprinting/utils.py +++ b/src/sentry/grouping/fingerprinting/utils.py @@ -246,7 +246,7 @@ def resolve_fingerprint_variable( exception_type = get_path(event.data, "exception", "values", -1, "type") return exception_type or "" - elif variable_key in ("value", "error.value"): + elif variable_key in ("value", "raw_value", "error.value", "error.raw_value"): value = get_path(event.data, "exception", "values", -1, "value") return value or "" @@ -337,7 +337,10 @@ def _resolve_single_entry(entry: str) -> str: if resolved_value is None: # variable wasn't recognized return entry - if variable_key == "message" and resolved_value != "": + if variable_key in ("message", "value", "error.value") and resolved_value not in ( + "", + "", + ): return normalize_message_for_grouping( resolved_value, context, reason="fingerprint_variable", trim_message=False ) diff --git a/tests/sentry/grouping/test_fingerprinting.py b/tests/sentry/grouping/test_fingerprinting.py index 4a68a274a42ec6..1630dc9eaaab5a 100644 --- a/tests/sentry/grouping/test_fingerprinting.py +++ b/tests/sentry/grouping/test_fingerprinting.py @@ -295,7 +295,11 @@ def test_variable_resolution() -> None: ("{{ default }}", "{{ default }}"), ("{{ dog }}", ""), ("{{ message }}", "That's ball number that Charlie hasn't brought back!"), + ("{{ value }}", "That's ball number that Charlie hasn't brought back!"), + ("{{ error.value }}", "That's ball number that Charlie hasn't brought back!"), ("{{ raw_message }}", "That's ball number 6 that Charlie hasn't brought back!"), + ("{{ raw_value }}", "That's ball number 6 that Charlie hasn't brought back!"), + ("{{ error.raw_value }}", "That's ball number 6 that Charlie hasn't brought back!"), ]: assert resolve_fingerprint_values([fingerprint_entry], event, context) == [ expected_resolved_value