Digest: check Grouping.exists only once (save a query)

This commit is contained in:
Klaas van Schelven
2025-05-06 10:30:51 +02:00
parent 17fb9cc850
commit cc2b22f08e

View File

@@ -269,7 +269,16 @@ class BaseIngestAPIView(View):
grouping_key = get_issue_grouper_for_data(event_data, calculated_type, calculated_value)
if not Grouping.objects.filter(project_id=event_metadata["project_id"], grouping_key=grouping_key).exists():
try:
grouping = Grouping.objects.get(project_id=event_metadata["project_id"], grouping_key=grouping_key)
issue = grouping.issue
issue_created = False
# update the denormalized fields
issue.last_seen = ingested_at
issue.digested_event_count += 1
except Grouping.DoesNotExist:
# we don't have Project.issue_count here ('premature optimization') so we just do an aggregate instead.
max_current = Issue.objects.filter(project_id=event_metadata["project_id"]).aggregate(
Max("digest_order"))["digest_order__max"]
@@ -294,15 +303,6 @@ class BaseIngestAPIView(View):
issue=issue,
)
else:
grouping = Grouping.objects.get(project_id=event_metadata["project_id"], grouping_key=grouping_key)
issue = grouping.issue
issue_created = False
# update the denormalized fields
issue.last_seen = ingested_at
issue.digested_event_count += 1
# +1 because we're about to add one event.
project_stored_event_count = project.stored_event_count + 1