11import os
22import random
33from datetime import datetime , timedelta
4- from time import time
4+ from time import sleep , time
55from typing import Any
66from unittest import mock
77from uuid import uuid4
2323from sentry .models .groupmeta import GroupMeta
2424from sentry .models .groupredirect import GroupRedirect
2525from sentry .models .userreport import UserReport
26- from sentry .services import eventstore
2726from sentry .services .eventstore .models import Event
2827from sentry .snuba .dataset import Dataset , EntityKey
2928from sentry .snuba .referrer import Referrer
@@ -479,6 +478,8 @@ def test_simple_issue_platform(self) -> None:
479478 }
480479 assert self .select_issue_platform_events (self .project .id ) == expected_occurrence_event
481480
481+ sleep (2.0 )
482+
482483 # This will delete the group and the events from the node store and Snuba
483484 with self .tasks ():
484485 delete_groups_for_project (
@@ -492,17 +493,22 @@ def test_simple_issue_platform(self) -> None:
492493 assert nodestore .backend .get (event_node_id )
493494 assert self .select_error_events (self .project .id ) == expected_error
494495
495- # The Issue Platform group and occurrence have been deleted
496+ # The Issue Platform group and occurrence have been deleted from Postgres and Snuba
496497 assert not Group .objects .filter (id = issue_platform_group .id ).exists ()
497498 # assert not nodestore.backend.get(occurrence_node_id)
498- conditions = eventstore .Filter (
499- project_ids = [self .project .id ], group_ids = [issue_platform_group .id ]
500- )
501- tenant_ids = {"organization_id" : self .organization .id , "referrer" : "test_deletions" }
502- events = eventstore .backend .get_events (
503- conditions , dataset = Dataset .IssuePlatform , tenant_ids = tenant_ids
504- )
505- assert len (events ) == 0
499+
500+ # Poll to ensure the event is actually deleted from Snuba
501+ max_attempts = 100
502+ event_deleted = False
503+ for attempt in range (max_attempts ):
504+ result = self .select_issue_platform_events (self .project .id )
505+ if result is None :
506+ event_deleted = True
507+ break
508+ if attempt < max_attempts - 1 :
509+ sleep (0.1 ) # Wait 100ms between attempts
510+
511+ assert event_deleted , f"Event still exists in Snuba after deletion: { result } "
506512
507513 @mock .patch ("sentry.deletions.tasks.nodestore.bulk_snuba_queries" )
508514 def test_issue_platform_batching (self , mock_bulk_snuba_queries : mock .Mock ) -> None :
0 commit comments