Skip to content

fix(worker): Resolve N+1 query in ProcessFlakesTask#1212

Open
sentry[bot] wants to merge 1 commit into
mainfrom
seer/fix/worker-n-plus-1-process-flakes-85iO41
Open

fix(worker): Resolve N+1 query in ProcessFlakesTask#1212
sentry[bot] wants to merge 1 commit into
mainfrom
seer/fix/worker-n-plus-1-process-flakes-85iO41

Conversation

@sentry

@sentry sentry Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

An N+1 query was identified in app.tasks.flakes.ProcessFlakesTask, specifically within the process_flakes_for_commit function. The original implementation iterated over each upload and, for each, called process_single_upload. Inside process_single_upload, a separate database query was executed to fetch Testrun objects for that specific upload. This resulted in an N+1 query pattern (1 query for uploads + N queries for testruns).

Additionally, Testrun.objects.bulk_update was being called inside the loop for each upload, leading to N separate update operations.

This fix addresses the N+1 query by:

  • Introducing get_testruns_for_uploads to batch-fetch all relevant Testrun objects for all uploads in a single database query.
  • Modifying process_single_upload to accept pre-fetched Testrun objects, eliminating the need for per-upload database queries.
  • Consolidating Testrun.objects.bulk_update into a single call after all uploads have been processed, further optimizing database interactions.

These changes significantly reduce the number of database queries and improve the performance of the ProcessFlakesTask.

Legal Boilerplate

Look, I get it. The entity doing business as "Sentry" was incorporated in the State of Delaware in 2015 as Functional Software, Inc. In 2022 this entity acquired Codecov and as result Sentry is going to need some rights from me in order to utilize my contributions in this PR. So here's the deal: I retain all rights, title and interest in and to my contributions, and by keeping this boilerplate intact I confirm that Sentry can use, modify, copy, and redistribute my contributions, under Sentry's choice of terms.

Fixes WORKER-YTG

@codecov

codecov Bot commented Jun 19, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 93.75000% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 91.89%. Comparing base (7b60783) to head (59528bf).
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
...orker/services/test_analytics/ta_process_flakes.py 93.75% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1212      +/-   ##
==========================================
- Coverage   91.89%   91.89%   -0.01%     
==========================================
  Files        1325     1325              
  Lines       50862    50874      +12     
  Branches     1626     1626              
==========================================
+ Hits        46741    46750       +9     
- Misses       3815     3818       +3     
  Partials      306      306              
Flag Coverage Δ
workerintegration 58.52% <6.25%> (-0.04%) ⬇️
workerunit 90.36% <93.75%> (-0.02%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

@codecov-notifications

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 93.75000% with 1 line in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
...orker/services/test_analytics/ta_process_flakes.py 93.75% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants