Skip to content
Snippets Groups Projects
Commit 4b98e812 authored by Olaf Tomalka's avatar Olaf Tomalka
Browse files

Optimized event pruning query to avoid two queries.

parent c0a92cb8
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -3,9 +3,8 @@ Please view this file on the master branch, on stable branches it's out of date.
v 8.12.0 (unreleased)
- Add ability to fork to a specific namespace using API. (ritave)
- Cleanup misalignments in Issue list view !6206
- Prune events older than 12 months. @ritave <olaf@tomalka.me>
- Prune events older than 12 months. (ritave)
- Prepend blank line to `Closes` message on merge request linked to issue (lukehowell)
- Prune events older than 12 months.
- Filter tags by name !6121
- Make push events have equal vertical spacing.
- Add two-factor recovery endpoint to internal API !5510
Loading
Loading
Loading
Loading
@@ -2,7 +2,16 @@ class PruneOldEventsWorker
include Sidekiq::Worker
 
def perform
# Contribution calendar shows maximum 12 months of events
Event.delete(Event.unscoped.where('created_at < ?', (12.months + 1.day).ago).limit(10_000).pluck(:id))
# Contribution calendar shows maximum 12 months of events.
# Double nested query is used because MySQL doesn't allow DELETE subqueries
# on the same table.
Event.unscoped.where(
'(id IN (SELECT id FROM (?) ids_to_remove))',
Event.unscoped.where(
'created_at < ?',
(12.months + 1.day).ago).
select(:id).
limit(10_000)).
delete_all
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment