Skip to content

Commit 8430f0d

Browse files
authored
Merge pull request rails#54447 from fatkodima/fix-retry_job-instrumentation
Fix `retry_job` instrumentation when using `:test` adapter for Active Job
2 parents a3b37ff + c060bb2 commit 8430f0d

File tree

3 files changed

+14
-1
lines changed

3 files changed

+14
-1
lines changed

activejob/lib/active_job/exceptions.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,8 @@ def after_discard(&blk)
157157
# end
158158
def retry_job(options = {})
159159
instrument :enqueue_retry, options.slice(:error, :wait) do
160-
enqueue options
160+
job = dup
161+
job.enqueue options
161162
end
162163
end
163164

activejob/test/cases/logging_test.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,16 @@ def test_enqueue_retry_logging
309309
assert_match(/Retrying RetryJob \(Job ID: .*?\) after \d+ attempts in 3 seconds, due to a DefaultsError.*\./, @logger.messages)
310310
end
311311
end
312+
313+
def test_retry_different_queue_logging
314+
perform_enqueued_jobs do
315+
perform_enqueued_jobs do
316+
RetryJob.perform_later("HeavyError", 2)
317+
assert_match(/Performed RetryJob \(Job ID: .*?\) from .+\(default\) in .*ms/, @logger.messages)
318+
end
319+
assert_match(/Performed RetryJob \(Job ID: .*?\) from .+\(low\) in .*ms/, @logger.messages)
320+
end
321+
end
312322
end
313323

314324
def test_enqueue_retry_logging_on_retry_job

activejob/test/jobs/retry_job.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class SecondDiscardableErrorOfTwo < StandardError; end
1919
class CustomDiscardableError < StandardError; end
2020
class UnlimitedRetryError < StandardError; end
2121
class ReportedError < StandardError; end
22+
class HeavyError < StandardError; end
2223

2324
class RetryJob < ActiveJob::Base
2425
retry_on DefaultsError
@@ -33,6 +34,7 @@ class RetryJob < ActiveJob::Base
3334
retry_on(ActiveJob::DeserializationError) { |job, error| JobBuffer.add("Raised #{error.class} for the #{job.executions} time") }
3435
retry_on UnlimitedRetryError, attempts: :unlimited
3536
retry_on ReportedError, report: true
37+
retry_on HeavyError, queue: :low
3638

3739
discard_on DiscardableError
3840
discard_on FirstDiscardableErrorOfTwo, SecondDiscardableErrorOfTwo

0 commit comments

Comments
 (0)