0
0
Fork 0
mirror of https://github.com/healthchecks/healthchecks.git synced 2025-04-07 22:25:35 +00:00

Fix Check.lock_and_delete() to gracefully handle already deleted check

This commit is contained in:
Pēteris Caune 2024-06-20 15:57:53 +03:00
parent 9a44ef1571
commit 324fa10ce7
No known key found for this signature in database
GPG key ID: E28D7679E9A9EDE2
2 changed files with 9 additions and 1 deletions

View file

@ -346,7 +346,7 @@ class Check(models.Model):
in the process of deletion.
"""
with transaction.atomic():
Check.objects.select_for_update().get(id=self.id).delete()
Check.objects.select_for_update().filter(id=self.id).delete()
def assign_all_channels(self) -> None:
channels = Channel.objects.filter(project=self.project)

View file

@ -473,3 +473,11 @@ class CheckModelTestCase(BaseTestCase):
# The next expected run time is at 2023-10-29 01:15 UTC, so the check
# should still be up for 10 minutes:
self.assertEqual(check.get_status(), "up")
def test_lock_and_delete_handles_already_deleted_checks(self) -> None:
check = Check.objects.create(project=self.project)
same_check = Check.objects.get(id=check.id)
check.delete()
# lock_and_delete should handle an already deleted check gracefully:
same_check.lock_and_delete()