Skip to content

Conversation

@seer-by-sentry
Copy link
Contributor

Fixes SENTRY-4596. The issue was that: Inefficient database query combining multiple LIKE conditions with a 200+ item IN clause causes PostgreSQL statement timeout, exhausting all task retries.

  • Introduces COMMIT_BATCH_SIZE to limit the number of commits processed in a single query.
  • Modifies get_filepath_committers to batch commit IDs when querying CommitFileChange objects, preventing potential query timeouts caused by large IN clauses combined with complex LIKE conditions.

This fix was generated by Seer in Sentry, triggered by Josh Ferge. 👁️ Run ID: 2555348

Not quite right? Click here to continue debugging with Seer.

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. and is gonna need some rights from me in order to utilize my contributions in this here 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.

@github-actions github-actions bot added the Scope: Backend Automatically applied to PRs that change backend components label Nov 11, 2025
@yuvmen yuvmen added the Trigger: getsentry tests Once code is reviewed: apply label to PR to trigger getsentry tests label Nov 11, 2025
@yuvmen yuvmen requested a review from a team November 11, 2025 21:20
@yuvmen yuvmen marked this pull request as ready for review November 11, 2025 21:20
all_file_changes: list[CommitFileChange] = []
commit_ids = [c.id for c in commits]

for i in range(0, len(commit_ids), COMMIT_BATCH_SIZE):
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: chunked can batch these into groups for you

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agree - chunked is much cleaner

@github-actions github-actions bot removed the Trigger: getsentry tests Once code is reviewed: apply label to PR to trigger getsentry tests label Nov 12, 2025
@yuvmen yuvmen added the Trigger: getsentry tests Once code is reviewed: apply label to PR to trigger getsentry tests label Nov 12, 2025
@yuvmen yuvmen merged commit 25f1fd3 into master Nov 12, 2025
67 of 68 checks passed
@yuvmen yuvmen deleted the seer/fix-batch-commit-file-queries branch November 12, 2025 18:11
andrewshie-sentry pushed a commit that referenced this pull request Nov 13, 2025
Fixes
[SENTRY-4596](https://sentry.io/organizations/sentry/issues/6726431295/).
The issue was that: Inefficient database query combining multiple `LIKE`
conditions with a 200+ item `IN` clause causes PostgreSQL statement
timeout, exhausting all task retries.

- Introduces `COMMIT_BATCH_SIZE` to limit the number of commits
processed in a single query.
- Modifies `get_filepath_committers` to batch commit IDs when querying
`CommitFileChange` objects, preventing potential query timeouts caused
by large `IN` clauses combined with complex `LIKE` conditions.


This fix was generated by Seer in Sentry, triggered by Yuval Mandelboum. 👁️
Run ID: 2555348

Co-authored-by: seer-by-sentry[bot] <157164994+seer-by-sentry[bot]@users.noreply.github.com>
Co-authored-by: getsantry[bot] <66042841+getsantry[bot]@users.noreply.github.com>
Co-authored-by: Yuval Mandelboum <yuval.mandelboum@sentry.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Scope: Backend Automatically applied to PRs that change backend components Trigger: getsentry tests Once code is reviewed: apply label to PR to trigger getsentry tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants