Skip to content

Commit a2f68a0

Browse files
committed
poll to wait for event to be deleted
1 parent f4393ae commit a2f68a0

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

tests/sentry/deletions/test_group.py

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import os
22
import random
33
from datetime import datetime, timedelta
4-
from time import time
4+
from time import sleep, time
55
from typing import Any
66
from unittest import mock
77
from uuid import uuid4
@@ -23,7 +23,6 @@
2323
from sentry.models.groupmeta import GroupMeta
2424
from sentry.models.groupredirect import GroupRedirect
2525
from sentry.models.userreport import UserReport
26-
from sentry.services import eventstore
2726
from sentry.services.eventstore.models import Event
2827
from sentry.snuba.dataset import Dataset, EntityKey
2928
from 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

Comments
 (0)