add lock events

This commit is contained in:
Pete Matsyburka
2025-09-15 09:10:03 +03:00
parent 86d680cfdf
commit 04e7f101be
10 changed files with 210 additions and 15 deletions
+8 -9
View File
@@ -16,21 +16,20 @@ module Submissions
raise NotCompletedYet unless submitter.completed_at?
return submitter.documents if ApplicationRecord.uncached { submitter.document_generation_events.complete.exists? }
key = ['result_attachments', submitter.id].join(':')
events =
ApplicationRecord.uncached do
DocumentGenerationEvent.where(submitter:).order(:created_at).to_a
end
return submitter.documents if ApplicationRecord.uncached { LockEvent.exists?(key:, event_name: :complete) }
events = ApplicationRecord.uncached { LockEvent.where(key:).order(:id).to_a }
if events.present? && events.last.event_name.in?(%w[start retry])
wait_for_complete_or_fail(submitter)
else
submitter.document_generation_events.create!(event_name: events.present? ? :retry : :start)
LockEvent.create!(key:, event_name: events.present? ? :retry : :start)
documents = GenerateResultAttachments.call(submitter)
submitter.document_generation_events.create!(event_name: :complete)
LockEvent.create!(key:, event_name: :complete)
documents
end
@@ -42,7 +41,7 @@ module Submissions
Rollbar.error(e) if defined?(Rollbar)
Rails.logger.error(e)
submitter.document_generation_events.create!(event_name: :fail)
LockEvent.create!(key:, event_name: :fail)
raise
end
@@ -56,7 +55,7 @@ module Submissions
last_event =
ApplicationRecord.uncached do
DocumentGenerationEvent.where(submitter:).order(:created_at).last
LockEvent.where(key: ['result_attachments', submitter.id].join(':')).order(:id).last
end
break submitter.documents.reload if last_event.event_name.in?(%w[complete fail])