Skip to content

Commit 906a6c0

Browse files
fix(crons): Update slug in quotas when deleting monitors (#68917)
This ensures we're not changing monitor slugs without keeping them synchronized in the quotas system.
1 parent c50d339 commit 906a6c0

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

src/sentry/monitors/endpoints/base_monitor_details.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,9 @@ def delete_monitor(self, request: Request, project: Project, monitor: Monitor) -
256256
for monitor_object in monitor_objects_list:
257257
# randomize slug on monitor deletion to prevent re-creation side effects
258258
if isinstance(monitor_object, Monitor):
259-
monitor_object.update(slug=get_random_string(length=24))
259+
new_slug = get_random_string(length=24)
260+
quotas.backend.update_monitor_slug(monitor.slug, new_slug, monitor.project_id)
261+
monitor_object.update(slug=new_slug)
260262

261263
schedule = RegionScheduledDeletion.schedule(
262264
monitor_object, days=0, actor=request.user

tests/sentry/monitors/endpoints/test_base_monitor_details.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -857,7 +857,8 @@ def setUp(self):
857857
self.login_as(user=self.user)
858858
super().setUp()
859859

860-
def test_simple(self):
860+
@patch("sentry.quotas.backend.update_monitor_slug")
861+
def test_simple(self, update_monitor_slug):
861862
monitor = self._create_monitor()
862863
old_slug = monitor.slug
863864

@@ -872,6 +873,7 @@ def test_simple(self):
872873
assert RegionScheduledDeletion.objects.filter(
873874
object_id=monitor.id, model_name="Monitor"
874875
).exists()
876+
update_monitor_slug.assert_called_once()
875877

876878
def test_mismatched_org_slugs(self):
877879
monitor = self._create_monitor()

0 commit comments

Comments
 (0)