From 99f77b6e6fde085259a763e5a7bffd349a2f6a84 Mon Sep 17 00:00:00 2001 From: codycooperross <50597551+codycooperross@users.noreply.github.com> Date: Wed, 11 Mar 2026 13:29:46 -0400 Subject: [PATCH 1/3] Refactor ReindexByDoiJob to include Shoryuken::Worker and update perform method --- app/jobs/reindex_by_doi_job.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/jobs/reindex_by_doi_job.rb b/app/jobs/reindex_by_doi_job.rb index 5f1a86e42..b10ef1bdc 100644 --- a/app/jobs/reindex_by_doi_job.rb +++ b/app/jobs/reindex_by_doi_job.rb @@ -1,9 +1,11 @@ # frozen_string_literal: true class ReindexByDoiJob < ApplicationJob - queue_as :lupo_background + include Shoryuken::Worker - def perform(doi_id, _options = {}) + shoryuken_options queue: -> { "#{ENV["RAILS_ENV"]}_lupo_background" }, auto_delete: true + + def perform(sqs_message = nil, doi_id = nil) doi = Doi.find_by(doi: doi_id) return unless doi.present? From d1205e4e05faba49514814ac02290b0503ade5ca Mon Sep 17 00:00:00 2001 From: codycooperross <50597551+codycooperross@users.noreply.github.com> Date: Wed, 11 Mar 2026 13:50:32 -0400 Subject: [PATCH 2/3] Update tests --- app/jobs/reindex_by_doi_job.rb | 1 + spec/jobs/reindex_by_doi_job_spec.rb | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/jobs/reindex_by_doi_job.rb b/app/jobs/reindex_by_doi_job.rb index b10ef1bdc..d7c403a65 100644 --- a/app/jobs/reindex_by_doi_job.rb +++ b/app/jobs/reindex_by_doi_job.rb @@ -3,6 +3,7 @@ class ReindexByDoiJob < ApplicationJob include Shoryuken::Worker + queue_as :lupo_background shoryuken_options queue: -> { "#{ENV["RAILS_ENV"]}_lupo_background" }, auto_delete: true def perform(sqs_message = nil, doi_id = nil) diff --git a/spec/jobs/reindex_by_doi_job_spec.rb b/spec/jobs/reindex_by_doi_job_spec.rb index 271f99603..24504fc1b 100644 --- a/spec/jobs/reindex_by_doi_job_spec.rb +++ b/spec/jobs/reindex_by_doi_job_spec.rb @@ -5,7 +5,7 @@ describe ReindexByDoiJob, type: :job do let(:datacite_doi) { create(:doi, agency: "datacite") } let(:other_doi) { create(:doi, agency: "crossref") } - subject(:job) { ReindexByDoiJob.perform_later(datacite_doi.doi) } + subject(:job) { ReindexByDoiJob.perform_later(nil, datacite_doi.doi) } it "queues the job" do expect { job }.to have_enqueued_job(ReindexByDoiJob).on_queue( @@ -14,7 +14,7 @@ end it "queues DataciteDoiImportInBulkJob for agency 'datacite'" do - ReindexByDoiJob.perform_now(datacite_doi.doi) + ReindexByDoiJob.new.perform(nil, datacite_doi.doi) enqueued_job = enqueued_jobs.find { |j| j[:job] == DataciteDoiImportInBulkJob } expect(enqueued_job).to be_present @@ -22,7 +22,7 @@ end it "queues OtherDoiImportInBulkJob for agency 'crossref'" do - ReindexByDoiJob.perform_now(other_doi.doi) + ReindexByDoiJob.new.perform(nil, other_doi.doi) enqueued_job = enqueued_jobs.find { |j| j[:job] == OtherDoiImportInBulkJob } expect(enqueued_job).to be_present From 49a46ed0d39c9971ecd6fe615728881415cd52a0 Mon Sep 17 00:00:00 2001 From: codycooperross <50597551+codycooperross@users.noreply.github.com> Date: Wed, 11 Mar 2026 15:23:10 -0400 Subject: [PATCH 3/3] Use hash structure for message data --- app/jobs/reindex_by_doi_job.rb | 8 +++++++- spec/jobs/reindex_by_doi_job_spec.rb | 6 +++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/app/jobs/reindex_by_doi_job.rb b/app/jobs/reindex_by_doi_job.rb index d7c403a65..f7dc4399a 100644 --- a/app/jobs/reindex_by_doi_job.rb +++ b/app/jobs/reindex_by_doi_job.rb @@ -6,7 +6,13 @@ class ReindexByDoiJob < ApplicationJob queue_as :lupo_background shoryuken_options queue: -> { "#{ENV["RAILS_ENV"]}_lupo_background" }, auto_delete: true - def perform(sqs_message = nil, doi_id = nil) + def perform(sqs_message = nil, data = nil) + parsed = JSON.parse(data) + return unless parsed.is_a?(Hash) + + doi_id = parsed["doi"] + return if doi_id.blank? + doi = Doi.find_by(doi: doi_id) return unless doi.present? diff --git a/spec/jobs/reindex_by_doi_job_spec.rb b/spec/jobs/reindex_by_doi_job_spec.rb index 24504fc1b..a5f2ca7bd 100644 --- a/spec/jobs/reindex_by_doi_job_spec.rb +++ b/spec/jobs/reindex_by_doi_job_spec.rb @@ -5,7 +5,7 @@ describe ReindexByDoiJob, type: :job do let(:datacite_doi) { create(:doi, agency: "datacite") } let(:other_doi) { create(:doi, agency: "crossref") } - subject(:job) { ReindexByDoiJob.perform_later(nil, datacite_doi.doi) } + subject(:job) { ReindexByDoiJob.perform_later(nil, { doi: datacite_doi.doi }.to_json) } it "queues the job" do expect { job }.to have_enqueued_job(ReindexByDoiJob).on_queue( @@ -14,7 +14,7 @@ end it "queues DataciteDoiImportInBulkJob for agency 'datacite'" do - ReindexByDoiJob.new.perform(nil, datacite_doi.doi) + ReindexByDoiJob.new.perform(nil, { doi: datacite_doi.doi }.to_json) enqueued_job = enqueued_jobs.find { |j| j[:job] == DataciteDoiImportInBulkJob } expect(enqueued_job).to be_present @@ -22,7 +22,7 @@ end it "queues OtherDoiImportInBulkJob for agency 'crossref'" do - ReindexByDoiJob.new.perform(nil, other_doi.doi) + ReindexByDoiJob.new.perform(nil, { doi: other_doi.doi }.to_json) enqueued_job = enqueued_jobs.find { |j| j[:job] == OtherDoiImportInBulkJob } expect(enqueued_job).to be_present