From c82c8b22727b2b90f75f3e4d9d9595f2882f8bb0 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Wed, 28 Jan 2026 08:50:44 +0200 Subject: [PATCH] fix race condition --- lib/submissions/ensure_result_generated.rb | 2 ++ lib/submissions/generate_result_attachments.rb | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/submissions/ensure_result_generated.rb b/lib/submissions/ensure_result_generated.rb index 39f4ef2f..66d3e9e4 100644 --- a/lib/submissions/ensure_result_generated.rb +++ b/lib/submissions/ensure_result_generated.rb @@ -32,6 +32,8 @@ module Submissions LockEvent.create!(key:, event_name: :complete) + submitter.documents.reset + documents end rescue ActiveRecord::RecordNotUnique diff --git a/lib/submissions/generate_result_attachments.rb b/lib/submissions/generate_result_attachments.rb index 47293728..dd5a231a 100644 --- a/lib/submissions/generate_result_attachments.rb +++ b/lib/submissions/generate_result_attachments.rb @@ -790,10 +790,10 @@ module Submissions def build_pdfs_index(submission, submitter: nil, flatten: true) latest_submitter = find_last_submitter(submission, submitter:) - Submissions::EnsureResultGenerated.call(latest_submitter) if latest_submitter + documents = Submissions::EnsureResultGenerated.call(latest_submitter) if latest_submitter + documents ||= submission.schema_documents - documents = latest_submitter&.documents&.preload(:blob).to_a.presence - documents ||= submission.schema_documents.preload(:blob) + ActiveRecord::Associations::Preloader.new(records: documents, associations: [:blob]).call attachment_uuids = Submissions.filtered_conditions_schema(submission).pluck('attachment_uuid') attachments_index = documents.index_by { |a| a.metadata['original_uuid'] || a.uuid }