Skip to content

Commit 6138b2d

Browse files
committed
Merge branch 'master' into scttcper/detector-details
# Conflicts: # static/app/views/detectors/detail.tsx
2 parents 772cadf + daf122e commit 6138b2d

File tree

74 files changed

+1835
-467
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

74 files changed

+1835
-467
lines changed

src/sentry/api/endpoints/project_rule_details.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,6 +245,7 @@ def put(self, request: Request, project, rule) -> Response:
245245
"name": data["name"],
246246
"environment": data.get("environment"),
247247
"project": project,
248+
"project_id": project.id,
248249
"action_match": data["actionMatch"],
249250
"filter_match": data.get("filterMatch"),
250251
"conditions": conditions,

src/sentry/api/endpoints/project_rules.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -800,6 +800,7 @@ def post(self, request: Request, project) -> Response:
800800
"name": data["name"],
801801
"environment": data.get("environment"),
802802
"project": project,
803+
"project_id": project.id,
803804
"action_match": data["actionMatch"],
804805
"filter_match": data.get("filterMatch"),
805806
"conditions": conditions,

src/sentry/grouping/api.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
DefaultGroupingComponent,
1717
SystemGroupingComponent,
1818
)
19-
from sentry.grouping.enhancer import LATEST_VERSION, Enhancements, get_enhancements_version
19+
from sentry.grouping.enhancer import Enhancements, get_enhancements_version
2020
from sentry.grouping.enhancer.exceptions import InvalidEnhancerConfig
2121
from sentry.grouping.strategies.base import DEFAULT_GROUPING_ENHANCEMENTS_BASE, GroupingContext
2222
from sentry.grouping.strategies.configurations import CONFIGURATIONS
@@ -93,14 +93,15 @@ def _get_enhancements(self, project: Project) -> str:
9393

9494
config_id = self._get_config_id(project)
9595
enhancements_base = CONFIGURATIONS[config_id].enhancements_base
96+
enhancements_version = get_enhancements_version(project, config_id)
9697

9798
# Instead of parsing and dumping out config here, we can make a
9899
# shortcut
99100
from sentry.utils.cache import cache
100101
from sentry.utils.hashlib import md5_text
101102

102103
cache_prefix = self.cache_prefix
103-
cache_prefix += f"{LATEST_VERSION}:"
104+
cache_prefix += f"{enhancements_version}:"
104105
cache_key = (
105106
cache_prefix
106107
+ md5_text(
@@ -124,7 +125,7 @@ def _get_enhancements(self, project: Project) -> str:
124125
enhancements = Enhancements.from_rules_text(
125126
enhancements_string,
126127
bases=[enhancements_base] if enhancements_base else [],
127-
version=get_enhancements_version(project, config_id),
128+
version=enhancements_version,
128129
referrer="project_rules",
129130
).base64_string
130131
except InvalidEnhancerConfig:

src/sentry/grouping/strategies/base.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
FrameGroupingComponent,
1212
StacktraceGroupingComponent,
1313
)
14-
from sentry.grouping.enhancer import Enhancements
14+
from sentry.grouping.enhancer import ENHANCEMENT_BASES, Enhancements
15+
from sentry.grouping.enhancer.exceptions import InvalidEnhancerConfig
1516
from sentry.interfaces.base import Interface
1617
from sentry.interfaces.exception import SingleException
1718
from sentry.interfaces.stacktrace import Frame, Stacktrace
@@ -305,9 +306,18 @@ def __init__(self, enhancements: str | None = None, **extra: Any):
305306
if enhancements is None:
306307
enhancements_instance = Enhancements.from_rules_text("", referrer="strategy_config")
307308
else:
308-
enhancements_instance = Enhancements.from_base64_string(
309-
enhancements, referrer="strategy_config"
310-
)
309+
# If the enhancements string has been loaded from an existing event, it may be from an
310+
# obsolete enhancements version, in which case we just use the default enhancements for
311+
# this grouping config
312+
try:
313+
enhancements_instance = Enhancements.from_base64_string(
314+
enhancements, referrer="strategy_config"
315+
)
316+
except InvalidEnhancerConfig:
317+
enhancements_instance = ENHANCEMENT_BASES[
318+
self.enhancements_base or DEFAULT_GROUPING_ENHANCEMENTS_BASE
319+
]
320+
311321
self.enhancements = enhancements_instance
312322

313323
def __repr__(self) -> str:

src/sentry/integrations/slack/tasks/find_channel_id_for_rule.py

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,23 @@
3232
),
3333
)
3434
def find_channel_id_for_rule(
35-
project: Project,
35+
project: Project | None,
3636
actions: Sequence[dict[str, Any]],
3737
uuid: str,
3838
rule_id: int | None = None,
3939
user_id: int | None = None,
40+
project_id: int | None = None,
4041
**kwargs: Any,
4142
) -> None:
4243
redis_rule_status = RedisRuleStatus(uuid)
4344

44-
try:
45-
project = Project.objects.get(id=project.id)
46-
except Project.DoesNotExist:
47-
redis_rule_status.set_value("failed")
48-
return
45+
if not project and project_id:
46+
try:
47+
project = Project.objects.get_from_cache(id=project_id)
48+
except Project.DoesNotExist:
49+
redis_rule_status.set_value("failed")
50+
return
51+
assert project, "find_channel_id_for_rule requires a project or project_id"
4952

5053
organization = project.organization
5154
integration_id: int | None = None

0 commit comments

Comments
 (0)