Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion src/sentry/grouping/variants.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

from typing import TypedDict

from sentry.grouping.fingerprinting import FingerprintRule
from sentry.grouping.utils import hash_from_values, is_default_fingerprint_var
from sentry.types.misc import KeyedList

Expand Down Expand Up @@ -147,7 +148,11 @@ def expose_fingerprint_dict(values, info):

matched_rule = info.get("matched_rule")
if matched_rule:
rv["matched_rule"] = matched_rule["text"]
# TODO: Before late October 2024, we didn't store the rule text along with the matched rule,
# meaning there are still events out there whose `_fingerprint_info` entry doesn't have it.
# Once those events have aged out (in February or so), we can remove the default value here
# and the `test_old_event_with_no_fingerprint_rule_text` test in `test_variants.py`.
rv["matched_rule"] = matched_rule.get("text", FingerprintRule.from_json(matched_rule).text)

return rv

Expand Down
20 changes: 20 additions & 0 deletions tests/sentry/grouping/test_variants.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

from sentry.eventstore.models import Event
from sentry.grouping.strategies.configurations import CONFIGURATIONS
from sentry.grouping.variants import CustomFingerprintVariant, expose_fingerprint_dict
from sentry.models.project import Project
from sentry.projectoptions.defaults import DEFAULT_GROUPING_CONFIG
from sentry.testutils.pytest.fixtures import InstaSnapshotter, django_db_all
Expand Down Expand Up @@ -97,3 +98,22 @@ def _assert_and_snapshot_results(
__file__, input_file, "test_event_hash_variant", config_name
),
)


# TODO: This can be deleted after Jan 2025, when affected events have aged out
def test_old_event_with_no_fingerprint_rule_text():
variant = CustomFingerprintVariant(
["dogs are great"],
{
"matched_rule": {
"attributes": {},
"fingerprint": ["dogs are great"],
"matchers": [["message", "*dogs*"]],
# newer events have a `text` entry here
}
},
)
assert expose_fingerprint_dict(variant.values, variant.info) == {
"values": ["dogs are great"],
"matched_rule": 'message:"*dogs*" -> "dogs are great"',
}
Loading