Skip to content

Commit 88519b0

Browse files
cathtengandrewshie-sentry
authored andcommitted
chore(aci): update IssueAlertMigrator to handle existing AlertRuleDetector lookup case (#95295)
1 parent 67d739a commit 88519b0

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

src/sentry/workflow_engine/migration_helpers/issue_alert_migration.py

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -131,15 +131,10 @@ def run(self) -> Workflow:
131131
def _create_detector_lookup(self) -> Detector:
132132

133133
if self.is_dry_run:
134-
created = True
135134
error_detector = Detector.objects.filter(
136135
type=ErrorGroupType.slug, project=self.project
137136
).first()
138-
if error_detector:
139-
created = not AlertRuleDetector.objects.filter(
140-
detector=error_detector, rule_id=self.rule.id
141-
).exists()
142-
else:
137+
if not error_detector:
143138
error_detector = Detector(type=ErrorGroupType.slug, project=self.project)
144139

145140
else:
@@ -148,12 +143,7 @@ def _create_detector_lookup(self) -> Detector:
148143
project=self.project,
149144
defaults={"config": {}, "name": ERROR_DETECTOR_NAME},
150145
)
151-
_, created = AlertRuleDetector.objects.get_or_create(
152-
detector=error_detector, rule_id=self.rule.id
153-
)
154-
155-
if not created:
156-
raise Exception("Issue alert already migrated")
146+
AlertRuleDetector.objects.get_or_create(detector=error_detector, rule_id=self.rule.id)
157147

158148
return error_detector
159149

@@ -286,6 +276,8 @@ def _create_workflow_and_lookup(
286276
workflow = Workflow(**kwargs)
287277
workflow.full_clean(exclude=["when_condition_group"])
288278
workflow.validate_config(workflow.config_schema)
279+
if AlertRuleWorkflow.objects.filter(rule_id=self.rule.id).exists():
280+
raise Exception("Issue alert already migrated")
289281
else:
290282
workflow = Workflow.objects.create(**kwargs)
291283
workflow.update(date_added=self.rule.date_added)

tests/sentry/workflow_engine/migration_helpers/test_issue_alert_migration.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,14 @@ def test_run__detector_exists(self):
327327
detector = Detector.objects.get(project_id=self.project.id)
328328
assert detector == project_detector
329329

330+
def test_run__detector_lookup_exists(self):
331+
AlertRuleDetector.objects.create(
332+
detector=self.create_detector(project=self.project),
333+
rule_id=self.issue_alert.id,
334+
)
335+
IssueAlertMigrator(self.issue_alert, self.user.id).run()
336+
AlertRuleWorkflow.objects.get(rule_id=self.issue_alert.id).workflow
337+
330338
def test_run__with_conditions(self):
331339
issue_alert = self.create_project_rule(
332340
condition_data=self.conditions,

0 commit comments

Comments
 (0)