fix(auto_archive_procedure_job): AutoArchiveProcedureJob may take longer than its cron delay [everyminutes], when it takes more than one minute, we re-enqueue the same mails

This commit is contained in:
mfo 2024-11-18 12:35:33 +01:00
parent 4b740f8f29
commit babdf9536f
No known key found for this signature in database
GPG key ID: 7CE3E1F5B794A8EC
4 changed files with 62 additions and 19 deletions

View file

@ -0,0 +1,16 @@
# frozen_string_literal: true
class AutoArchiveProcedureDossiersJob < ApplicationJob
def perform(procedure)
procedure
.dossiers
.state_en_construction
.find_each do |d|
begin
d.passer_automatiquement_en_instruction!
rescue StandardError => e
Sentry.capture_exception(e, extra: { procedure_id: procedure.id })
end
end
end
end

View file

@ -2,18 +2,15 @@
class Cron::AutoArchiveProcedureJob < Cron::CronJob
self.schedule_expression = "every 1 minute"
queue_as :critical
def perform(*args)
procedures_to_close.each do |procedure|
# A buggy procedure should NEVER prevent the closing of another procedure
# we therefore exceptionally add a `begin resue` block.
begin
procedure
.dossiers
.state_en_construction
.find_each(&:passer_automatiquement_en_instruction!)
procedure.close!
AutoArchiveProcedureDossiersJob.perform_later(procedure)
rescue StandardError => e
Sentry.capture_exception(e, extra: { procedure_id: procedure.id })
end