From 5b4ec2141126abd0d5cfc87c41eaf9f7ac7667b3 Mon Sep 17 00:00:00 2001 From: "Armen Zambrano G." <44410+armenzg@users.noreply.github.com> Date: Tue, 25 Nov 2025 15:51:26 -0500 Subject: [PATCH 1/2] chore(deletions): Move tasks under sentry.deletions This is for consistencies sake. --- pyproject.toml | 2 -- src/sentry/conf/server.py | 6 +++--- src/sentry/{ => deletions}/tasks/delete_pending_groups.py | 2 +- .../{ => deletions}/tasks/delete_seer_grouping_records.py | 2 +- .../{ => deletions}/tasks/test_delete_pending_groups.py | 4 ++-- .../tasks/test_delete_seer_grouping_records.py | 4 ++-- 6 files changed, 9 insertions(+), 11 deletions(-) rename src/sentry/{ => deletions}/tasks/delete_pending_groups.py (98%) rename src/sentry/{ => deletions}/tasks/delete_seer_grouping_records.py (98%) rename tests/sentry/{ => deletions}/tasks/test_delete_pending_groups.py (99%) rename tests/sentry/{ => deletions}/tasks/test_delete_seer_grouping_records.py (99%) diff --git a/pyproject.toml b/pyproject.toml index 0d25b8fe24da2c..cd4c7b32c4a921 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -624,7 +624,6 @@ module = [ "sentry.tasks.beacon", "sentry.tasks.codeowners.*", "sentry.tasks.commit_context", - "sentry.tasks.delete_seer_grouping_records", "sentry.tasks.on_demand_metrics", "sentry.tasks.reprocessing2", "sentry.tasks.store", @@ -844,7 +843,6 @@ module = [ "tests.sentry.spans.grouping.*", "tests.sentry.tasks.integrations.*", "tests.sentry.tasks.test_code_owners", - "tests.sentry.tasks.test_delete_seer_grouping_records", "tests.sentry.tasks.test_on_demand_metrics", "tests.sentry.tempest.endpoints.*", "tests.sentry.templatetags.*", diff --git a/src/sentry/conf/server.py b/src/sentry/conf/server.py index ebf29d4deeb348..67d7d3e4928826 100644 --- a/src/sentry/conf/server.py +++ b/src/sentry/conf/server.py @@ -831,6 +831,8 @@ def SOCIAL_AUTH_DEFAULT_USERNAME() -> str: "sentry.debug_files.tasks", "sentry.deletions.tasks.hybrid_cloud", "sentry.deletions.tasks.scheduled", + "sentry.deletions.tasks.delete_pending_groups", + "sentry.deletions.tasks.delete_seer_grouping_records", "sentry.demo_mode.tasks", "sentry.dynamic_sampling.tasks.boost_low_volume_projects", "sentry.dynamic_sampling.tasks.boost_low_volume_transactions", @@ -894,8 +896,6 @@ def SOCIAL_AUTH_DEFAULT_USERNAME() -> str: "sentry.tasks.collect_project_platforms", "sentry.tasks.commit_context", "sentry.tasks.commits", - "sentry.tasks.delete_pending_groups", - "sentry.tasks.delete_seer_grouping_records", "sentry.tasks.digests", "sentry.tasks.email", "sentry.tasks.groupowner", @@ -1009,7 +1009,7 @@ def SOCIAL_AUTH_DEFAULT_USERNAME() -> str: "schedule": task_crontab("0", "*/2", "*", "*", "*"), }, "delete-pending-groups": { - "task": "deletions:sentry.tasks.delete_pending_groups", + "task": "deletions:sentry.deletions.tasks.delete_pending_groups", # Runs every 6 hours (at 00:00, 06:00, 12:00, 18:00 UTC) "schedule": task_crontab("0", "*/6", "*", "*", "*"), }, diff --git a/src/sentry/tasks/delete_pending_groups.py b/src/sentry/deletions/tasks/delete_pending_groups.py similarity index 98% rename from src/sentry/tasks/delete_pending_groups.py rename to src/sentry/deletions/tasks/delete_pending_groups.py index dec10f9332a4c2..6b3d8c5e481bbf 100644 --- a/src/sentry/tasks/delete_pending_groups.py +++ b/src/sentry/deletions/tasks/delete_pending_groups.py @@ -20,7 +20,7 @@ @instrumented_task( - name="sentry.tasks.delete_pending_groups", + name="sentry.deletions.tasks.delete_pending_groups", namespace=deletion_tasks, processing_deadline_duration=10 * 60, retry=Retry(times=3, delay=60), diff --git a/src/sentry/tasks/delete_seer_grouping_records.py b/src/sentry/deletions/tasks/delete_seer_grouping_records.py similarity index 98% rename from src/sentry/tasks/delete_seer_grouping_records.py rename to src/sentry/deletions/tasks/delete_seer_grouping_records.py index ba0cb2b6fd4833..83dc44ef2a10dd 100644 --- a/src/sentry/tasks/delete_seer_grouping_records.py +++ b/src/sentry/deletions/tasks/delete_seer_grouping_records.py @@ -18,7 +18,7 @@ @instrumented_task( - name="sentry.tasks.delete_seer_grouping_records_by_hash", + name="sentry.deletions.tasks.delete_seer_grouping_records_by_hash", namespace=seer_tasks, processing_deadline_duration=60 * (15 + 5), silo_mode=SiloMode.REGION, diff --git a/tests/sentry/tasks/test_delete_pending_groups.py b/tests/sentry/deletions/tasks/test_delete_pending_groups.py similarity index 99% rename from tests/sentry/tasks/test_delete_pending_groups.py rename to tests/sentry/deletions/tasks/test_delete_pending_groups.py index a12b529022b00f..1af47ac260e776 100644 --- a/tests/sentry/tasks/test_delete_pending_groups.py +++ b/tests/sentry/deletions/tasks/test_delete_pending_groups.py @@ -5,12 +5,12 @@ from django.utils import timezone -from sentry.models.group import Group, GroupStatus -from sentry.tasks.delete_pending_groups import ( +from sentry.deletions.tasks.delete_pending_groups import ( MAX_LAST_SEEN_DAYS, MIN_LAST_SEEN_HOURS, delete_pending_groups, ) +from sentry.models.group import Group, GroupStatus from sentry.testutils.cases import TestCase from sentry.types.group import GroupSubStatus diff --git a/tests/sentry/tasks/test_delete_seer_grouping_records.py b/tests/sentry/deletions/tasks/test_delete_seer_grouping_records.py similarity index 99% rename from tests/sentry/tasks/test_delete_seer_grouping_records.py rename to tests/sentry/deletions/tasks/test_delete_seer_grouping_records.py index ac8be04ecd7a74..141890424703d3 100644 --- a/tests/sentry/tasks/test_delete_seer_grouping_records.py +++ b/tests/sentry/deletions/tasks/test_delete_seer_grouping_records.py @@ -1,11 +1,11 @@ from time import time from unittest.mock import MagicMock, patch -from sentry.models.grouphash import GroupHash -from sentry.tasks.delete_seer_grouping_records import ( +from sentry.deletions.tasks.delete_seer_grouping_records import ( delete_seer_grouping_records_by_hash, may_schedule_task_to_delete_hashes_from_seer, ) +from sentry.models.grouphash import GroupHash from sentry.testutils.cases import TestCase from sentry.testutils.pytest.fixtures import django_db_all From 40804a5b2b5e30950ffd01f1e32038b0c858a039 Mon Sep 17 00:00:00 2001 From: "Armen Zambrano G." <44410+armenzg@users.noreply.github.com> Date: Tue, 25 Nov 2025 16:14:04 -0500 Subject: [PATCH 2/2] Fix imports --- src/sentry/core/endpoints/project_details.py | 4 +++- src/sentry/deletions/defaults/group.py | 4 +++- src/sentry/seer/similarity/similar_issues.py | 2 +- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/sentry/core/endpoints/project_details.py b/src/sentry/core/endpoints/project_details.py index 21b944a4f51c27..5324d6d52ebe14 100644 --- a/src/sentry/core/endpoints/project_details.py +++ b/src/sentry/core/endpoints/project_details.py @@ -34,6 +34,9 @@ ObjectStatus, ) from sentry.deletions.models.scheduleddeletion import RegionScheduledDeletion +from sentry.deletions.tasks.delete_seer_grouping_records import ( + call_seer_delete_project_grouping_records, +) from sentry.dynamic_sampling import get_supported_biases_ids, get_user_biases from sentry.dynamic_sampling.types import DynamicSamplingMode from sentry.dynamic_sampling.utils import has_custom_dynamic_sampling, has_dynamic_sampling @@ -57,7 +60,6 @@ from sentry.notifications.utils import has_alert_integration from sentry.relay.datascrubbing import validate_pii_config_update, validate_pii_selectors from sentry.seer.autofix.constants import AutofixAutomationTuningSettings -from sentry.tasks.delete_seer_grouping_records import call_seer_delete_project_grouping_records from sentry.tempest.utils import has_tempest_access logger = logging.getLogger(__name__) diff --git a/src/sentry/deletions/defaults/group.py b/src/sentry/deletions/defaults/group.py index 0d21f1fd1e9bc7..4d7e2e2f7cb17d 100644 --- a/src/sentry/deletions/defaults/group.py +++ b/src/sentry/deletions/defaults/group.py @@ -21,6 +21,9 @@ from typing import Any from sentry import models, options +from sentry.deletions.tasks.delete_seer_grouping_records import ( + may_schedule_task_to_delete_hashes_from_seer, +) from sentry.deletions.tasks.nodestore import delete_events_for_groups_from_nodestore_and_eventstore from sentry.issues.grouptype import GroupCategory, InvalidGroupTypeError from sentry.models.group import Group, GroupStatus @@ -30,7 +33,6 @@ from sentry.notifications.models.notificationmessage import NotificationMessage from sentry.services.eventstore.models import Event from sentry.snuba.dataset import Dataset -from sentry.tasks.delete_seer_grouping_records import may_schedule_task_to_delete_hashes_from_seer from sentry.utils import metrics from ..base import BaseDeletionTask, BaseRelation, ModelDeletionTask, ModelRelation diff --git a/src/sentry/seer/similarity/similar_issues.py b/src/sentry/seer/similarity/similar_issues.py index ee095cb2b49c78..a548bf64e7c9a0 100644 --- a/src/sentry/seer/similarity/similar_issues.py +++ b/src/sentry/seer/similarity/similar_issues.py @@ -12,6 +12,7 @@ SEER_SIMILAR_ISSUES_URL, SEER_SIMILARITY_CIRCUIT_BREAKER_KEY, ) +from sentry.deletions.tasks.delete_seer_grouping_records import delete_seer_grouping_records_by_hash from sentry.models.grouphashmetadata import GroupHashMetadata from sentry.net.http import connection_from_url from sentry.seer.signed_seer_api import make_signed_seer_api_request @@ -22,7 +23,6 @@ SimilarHashNotFoundError, SimilarIssuesEmbeddingsRequest, ) -from sentry.tasks.delete_seer_grouping_records import delete_seer_grouping_records_by_hash from sentry.utils import json, metrics from sentry.utils.circuit_breaker2 import CircuitBreaker from sentry.utils.json import JSONDecodeError