-
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
chore(cleanup): Fix File cleanup job timeouts #102055
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
| (RuleFireHistory, "date_added", "date_added"), | ||
| (Release, "date_added", "date_added"), | ||
| (File, "timestamp", "timestamp"), | ||
| (File, "timestamp", "id"), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Bug: The remove_cross_project_models function tries to remove a hardcoded tuple that was changed in this PR, causing a ValueError when cleanup --project is run.
Severity: HIGH | Confidence: 0.98
🔍 Detailed Analysis
The `cleanup` command will crash when run with the `--project` flag. A recent change updated the cleanup configuration for the `File` model from `(File, "timestamp", "timestamp")` to `(File, "timestamp", "id")`. However, the `remove_cross_project_models` function, which is called during project-specific cleanup, was not updated. It still attempts to remove the old, non-existent tuple `(File, "timestamp", "timestamp")` from a list. This operation will raise an unhandled `ValueError`, causing the entire cleanup command to fail and preventing any project-specific cleanup from completing.
💡 Suggested Fix
In remove_cross_project_models, update the line deletes.remove((File, "timestamp", "timestamp")) to deletes.remove((File, "timestamp", "id")) to match the new tuple structure defined elsewhere.
🤖 Prompt for AI Agent
Fix this bug. In src/sentry/runner/commands/cleanup.py at line 538: The `cleanup`
command will crash when run with the `--project` flag. A recent change updated the
cleanup configuration for the `File` model from `(File, "timestamp", "timestamp")` to
`(File, "timestamp", "id")`. However, the `remove_cross_project_models` function, which
is called during project-specific cleanup, was not updated. It still attempts to remove
the old, non-existent tuple `(File, "timestamp", "timestamp")` from a list. This
operation will raise an unhandled `ValueError`, causing the entire cleanup command to
fail and preventing any project-specific cleanup from completing.
Did we get this right? 👍 / 👎 to inform future reviews.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's actually right about this, although I don't know how much it actually matters
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
oh yea, no reason not to correct this, I will
The File cleanup job was timing out trying to fetch by ordering the timestamp field which has no index in US. Switched to ordering by ID which is performant. This will cause us to always go through entire table in chunks but we want to do that right now. Once we cleaned a lot of rows we can add an index and revert. Also corrected the child_relation to use ModelRelation type
f06c4e9 to
e772441
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #102055 +/- ##
=========================================
Coverage 80.97% 80.97%
=========================================
Files 8733 8733
Lines 388590 388701 +111
Branches 24654 24654
=========================================
+ Hits 314657 314749 +92
- Misses 73573 73592 +19
Partials 360 360 |
The File cleanup job was timing out trying to fetch by ordering the timestamp field which has no index in US. Switched to ordering by ID which is performant. This will cause us to always go through entire table in chunks but we want to do that right now. Once we cleaned a lot of rows we can add an index and revert.
Also corrected the child_relation to use ModelRelation type