Skip to content

Commit 7fcea26

Browse files
committed
fix(deletions): Switch to bulk deletions for GroupHistory
This is how it used to be before #76608. Now that we have fixed the circular relationship (#102470) I believe we should give this approach another attempt. Fixes [SENTRY-5BX2](https://sentry.sentry.io/issues/6993998110/): For posterity: ``` OperationalError canceling statement due to user request SQL: SELECT "sentry_grouphistory"."id" AS "id" FROM "sentry_grouphistory" WHERE "sentry_grouphistory"."group_id" = %s ORDER BY 1 ASC LIMIT 100 ``` The group in question has only been seen 4 times yet it has 905,729 rows of group history.
1 parent e57a9b2 commit 7fcea26

File tree

3 files changed

+17
-1
lines changed

3 files changed

+17
-1
lines changed

src/sentry/deletions/__init__.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import functools
44
from typing import TYPE_CHECKING, Any
55

6+
from sentry import options
7+
68
if TYPE_CHECKING:
79
from sentry.db.models.base import Model
810
from sentry.deletions.base import BaseDeletionTask
@@ -64,7 +66,10 @@ def load_defaults(manager: DeletionTaskManager) -> None:
6466
manager.register(models.GroupEnvironment, BulkModelDeletionTask)
6567
manager.register(models.GroupHash, defaults.GroupHashDeletionTask)
6668
manager.register(models.GroupHashMetadata, BulkModelDeletionTask)
67-
manager.register(models.GroupHistory, defaults.GroupHistoryDeletionTask)
69+
if options.get("deletions.group-history.use-bulk-deletion"):
70+
manager.register(models.GroupHistory, defaults.GroupHistoryDeletionTask)
71+
else:
72+
manager.register(models.GroupHistory, BulkModelDeletionTask)
6873
manager.register(models.GroupLink, BulkModelDeletionTask)
6974
manager.register(models.GroupMeta, BulkModelDeletionTask)
7075
manager.register(models.GroupRedirect, BulkModelDeletionTask)

src/sentry/deletions/defaults/grouphistory.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from sentry import options
12
from sentry.deletions.base import ModelDeletionTask
23
from sentry.models.grouphistory import GroupHistory
34

@@ -22,6 +23,10 @@ def chunk(self, apply_filter: bool = False) -> bool:
2223
return super().chunk()
2324

2425
for group_id in group_ids:
26+
if options.get("deletions.group-history.delete-all-at-once"):
27+
self.model.objects.filter(group_id=group_id).delete()
28+
continue
29+
2530
# Delete history records for a single group in chunks of 100
2631
queryset = self.model.objects.filter(group_id=group_id)
2732
while True:

src/sentry/options/defaults.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -343,6 +343,12 @@
343343
flags=FLAG_AUTOMATOR_MODIFIABLE,
344344
)
345345

346+
register(
347+
"deletions.group-history.use-bulk-deletion",
348+
default=False,
349+
type=Bool,
350+
flags=FLAG_AUTOMATOR_MODIFIABLE,
351+
)
346352

347353
register(
348354
"cleanup.abort_execution",

0 commit comments

Comments
 (0)