From 131610ea992765f69d1d3ec0b3cdb1cb6c6929be Mon Sep 17 00:00:00 2001 From: Matt Duncan Date: Fri, 26 Jul 2024 11:29:26 -0700 Subject: [PATCH 1/2] fix(issues): Don't treat %s as unique If an event already has a parameterized logentry message, ensure that uniq_id doesn't try to treat the %s as unique. --- src/sentry/grouping/parameterization.py | 10 +++++----- tests/sentry/grouping/test_normalize_message.py | 5 +++++ 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/sentry/grouping/parameterization.py b/src/sentry/grouping/parameterization.py index 49309f7d4ca91c..2da58b18c80906 100644 --- a/src/sentry/grouping/parameterization.py +++ b/src/sentry/grouping/parameterization.py @@ -240,11 +240,11 @@ def num_tokens_from_string(token_str: str) -> int: def is_probably_uniq_id(token_str: str) -> bool: token_str = token_str.strip("\"'[]{}():;") if len(token_str) < _UniqueId.TOKEN_LENGTH_MINIMUM: - return False - if ( - token_str[0] == "<" and token_str[-1] == ">" - ): # Don't replace already-parameterized tokens - return False + return False # Don't replace short tokens + if token_str[0] == "<" and token_str[-1] == ">": + return False # Don't replace already-parameterized tokens + if "%s" in token_str: + return False # Don't replace already-parameterized log messages token_length_ratio = _UniqueId.num_tokens_from_string(token_str) / len(token_str) if ( len(token_str) > _UniqueId.TOKEN_LENGTH_LONG diff --git a/tests/sentry/grouping/test_normalize_message.py b/tests/sentry/grouping/test_normalize_message.py index 72a318b8b46e89..4f95dc49113eea 100644 --- a/tests/sentry/grouping/test_normalize_message.py +++ b/tests/sentry/grouping/test_normalize_message.py @@ -170,6 +170,11 @@ """[401,""]""", """[,""]""", ), + ( + "Uniq ID - log messages ignored properly", + "Hard time limit (%ss) exceeded for %s[%s]", + "Hard time limit (%ss) exceeded for %s[%s]", + ), ( "Uniq ID - no change", """Blocked 'script' from 'wasm-eval:'""", From e7e21d01d5b4292a2420809e9d4abf7a610f0d6c Mon Sep 17 00:00:00 2001 From: Matt Duncan Date: Fri, 26 Jul 2024 16:25:25 -0700 Subject: [PATCH 2/2] chore(issues): Enable stronger typing --- pyproject.toml | 1 + tests/sentry/grouping/test_normalize_message.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 841f2e70f43f01..64e60a796106f4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -622,6 +622,7 @@ module = [ "tests.sentry.api.endpoints.issues.*", "tests.sentry.event_manager.test_event_manager", "tests.sentry.grouping.test_fingerprinting", + "tests.sentry.grouping.test_normalize_message", "tests.sentry.hybridcloud.*", "tests.sentry.issues", "tests.sentry.issues.endpoints", diff --git a/tests/sentry/grouping/test_normalize_message.py b/tests/sentry/grouping/test_normalize_message.py index 4f95dc49113eea..054b986c09f454 100644 --- a/tests/sentry/grouping/test_normalize_message.py +++ b/tests/sentry/grouping/test_normalize_message.py @@ -182,7 +182,7 @@ ), ], ) -def test_normalize_message(name, input, expected): +def test_normalize_message(name: str, input: str, expected: str) -> None: event = Event(project_id=1, event_id="something") with override_options( { @@ -215,7 +215,7 @@ def test_normalize_message(name, input, expected): ), ], ) -def test_fail_to_normalize_message(name, input, expected): +def test_fail_to_normalize_message(name: str, input: str, expected: str) -> None: event = Event(project_id=1, event_id="something") with override_options( {