Merge pull request #10300 from tchak/chore-stable_id-task
fix(stable_id): recursive job to fill stable_ids
This commit is contained in:
commit
4cdaef3a08
2 changed files with 12 additions and 16 deletions
|
@ -1,13 +1,18 @@
|
||||||
class Migrations::BackfillStableIdJob < ApplicationJob
|
class Migrations::BackfillStableIdJob < ApplicationJob
|
||||||
queue_as :low_priority
|
queue_as :low_priority
|
||||||
|
|
||||||
def perform(dossier_id)
|
BATCH = 100_000
|
||||||
|
|
||||||
|
def perform(iteration)
|
||||||
sql = "UPDATE champs SET stable_id = t.stable_id, stream = 'main'
|
sql = "UPDATE champs SET stable_id = t.stable_id, stream = 'main'
|
||||||
FROM types_de_champ t
|
FROM types_de_champ t
|
||||||
WHERE champs.type_de_champ_id = t.id
|
WHERE champs.type_de_champ_id = t.id
|
||||||
AND champs.dossier_id = ?
|
AND champs.id IN (SELECT id FROM champs WHERE champs.stable_id IS NULL LIMIT ?);"
|
||||||
AND champs.stable_id IS NULL;"
|
query = ActiveRecord::Base.sanitize_sql_array([sql, BATCH])
|
||||||
query = ActiveRecord::Base.sanitize_sql_array([sql, dossier_id])
|
|
||||||
ActiveRecord::Base.connection.execute(query)
|
ActiveRecord::Base.connection.execute(query)
|
||||||
|
|
||||||
|
if Champ.exists?(stable_id: nil)
|
||||||
|
Migrations::BackfillStableIdJob.set(wait: 2.seconds).perform_later(iteration + 1)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,19 +2,10 @@
|
||||||
|
|
||||||
module Maintenance
|
module Maintenance
|
||||||
class BackfillChampsStableIdTask < MaintenanceTasks::Task
|
class BackfillChampsStableIdTask < MaintenanceTasks::Task
|
||||||
def collection
|
no_collection
|
||||||
Dossier.select(:id)
|
|
||||||
end
|
|
||||||
|
|
||||||
def process(dossier)
|
def process
|
||||||
if Champ.exists?(dossier_id: dossier.id, stable_id: nil)
|
Migrations::BackfillStableIdJob.perform_later(0)
|
||||||
day = 24 * 60 * 60 # 24 hours in seconds
|
|
||||||
wait = rand(0...(day * 4)).seconds # every second over 4 days
|
|
||||||
|
|
||||||
Migrations::BackfillStableIdJob
|
|
||||||
.set(wait:)
|
|
||||||
.perform_later(dossier.id)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue