Skip to content

Commit c06f337

Browse files
committed
fix(workflows): add detector group caching in ensure_association_with_detector
1 parent 7f90d00 commit c06f337

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

src/sentry/workflow_engine/models/detector_group.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
from typing import ClassVar, Self
2+
13
from django.db import models
24

35
from sentry.backup.scopes import RelocationScope
46
from sentry.db.models import DefaultFieldsModel, FlexibleForeignKey, cell_silo_model
7+
from sentry.db.models.manager.base import BaseManager
58

69

710
@cell_silo_model
@@ -15,6 +18,8 @@ class DetectorGroup(DefaultFieldsModel):
1518
detector = FlexibleForeignKey("workflow_engine.Detector", null=True, on_delete=models.SET_NULL)
1619
group = FlexibleForeignKey("sentry.Group", on_delete=models.CASCADE)
1720

21+
objects: ClassVar[BaseManager[Self]] = BaseManager(cache_fields=("pk", "group"))
22+
1823
class Meta:
1924
db_table = "workflow_engine_detectorgroup"
2025
app_label = "workflow_engine"

src/sentry/workflow_engine/processors/detector.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -636,8 +636,11 @@ def ensure_association_with_detector(group: Group, detector_id: int | None = Non
636636
return False
637637

638638
# Common case: it exists, we verify and move on.
639-
if DetectorGroup.objects.filter(group_id=group.id).exists():
639+
try:
640+
DetectorGroup.objects.get_from_cache(group=group)
640641
return True
642+
except DetectorGroup.DoesNotExist:
643+
pass
641644

642645
# Association is missing, determine the detector_id if not provided
643646
if detector_id is None:

0 commit comments

Comments
 (0)