Merged
Conversation
Our invocation output table is huge and deleting so many rows causes major lock contention. Delete them a few at a time instead to decrease lock contention.
There was a problem hiding this comment.
Pull request overview
This PR implements batched deletion of old invocations to reduce database lock contention during periodic cleanup operations. Instead of deleting all expired invocations in a single transaction, the cleanup process now deletes them in small batches with delays between batches.
Key changes:
- Added
delete_invocations_batchmethod to the DB trait that accepts a limit parameter for batch size - Modified the periodic cleanup task to loop through batches of 10 invocations with 100ms delays between batches
- Implemented the batched deletion in both SQLite and Postgres database backends using a SELECT-then-DELETE pattern
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| blade/state/lib.rs | Adds new delete_invocations_batch method to the DB trait interface |
| blade/main.rs | Replaces single bulk delete with batched deletion loop in periodic cleanup task, adding batch size and delay constants |
| blade/db/sqlite/mod.rs | Implements delete_invocations_batch for SQLite using SELECT-then-DELETE pattern and adds comprehensive test coverage |
| blade/db/postgres/mod.rs | Implements delete_invocations_batch for Postgres using SELECT-then-DELETE pattern and adds comprehensive test coverage |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Our invocation output table is huge and deleting so many rows causes major lock contention. Delete them a few at a time instead to decrease lock contention.
A batch size of 10 was intentionally chosen to deal with large write amplification from cascading deletes.