diff --git a/app/models/solid_queue/claimed_execution.rb b/app/models/solid_queue/claimed_execution.rb index c2b13909..94ee3593 100644 --- a/app/models/solid_queue/claimed_execution.rb +++ b/app/models/solid_queue/claimed_execution.rb @@ -92,7 +92,7 @@ def failed_with(error) private def execute - ActiveJob::Base.execute(job.arguments) + ActiveJob::Base.execute(job.arguments.merge("provider_job_id" => job.id)) Result.new(true, nil) rescue Exception => e Result.new(false, e) diff --git a/test/dummy/app/jobs/provider_job_id_job.rb b/test/dummy/app/jobs/provider_job_id_job.rb new file mode 100644 index 00000000..6992fcab --- /dev/null +++ b/test/dummy/app/jobs/provider_job_id_job.rb @@ -0,0 +1,5 @@ +class ProviderJobIdJob < ApplicationJob + def perform + JobBuffer.add "provider_job_id: #{provider_job_id}" + end +end diff --git a/test/models/solid_queue/claimed_execution_test.rb b/test/models/solid_queue/claimed_execution_test.rb index b7892b21..98513c94 100644 --- a/test/models/solid_queue/claimed_execution_test.rb +++ b/test/models/solid_queue/claimed_execution_test.rb @@ -73,6 +73,14 @@ class SolidQueue::ClaimedExecutionTest < ActiveSupport::TestCase assert job.reload.failed? end + test "provider_job_id is available within job execution" do + job = ProviderJobIdJob.perform_later + claimed_execution = prepare_and_claim_job job + claimed_execution.perform + + assert_equal "provider_job_id: #{job.provider_job_id}", JobBuffer.last_value + end + private def prepare_and_claim_job(active_job, process: @process) job = SolidQueue::Job.find_by(active_job_id: active_job.job_id)