Skip to content

Commit

Permalink
Merge pull request #47865 from bensheldon/enqueue-error-message
Browse files Browse the repository at this point in the history
Fix Active Job log message to correctly report a job failed to enqueue when the adapter raises an `ActiveJob::EnqueueError`
  • Loading branch information
kamipo committed Sep 5, 2023
1 parent ce75465 commit ac44103
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 2 deletions.
6 changes: 6 additions & 0 deletions activejob/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
* Fix Active Job log message to correctly report a job failed to enqueue
when the adapter raises an `ActiveJob::EnqueueError`.

*Ben Sheldon*


## Rails 7.0.7.2 (August 22, 2023) ##

* No changes.
Expand Down
4 changes: 2 additions & 2 deletions activejob/lib/active_job/log_subscriber.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ module ActiveJob
class LogSubscriber < ActiveSupport::LogSubscriber # :nodoc:
def enqueue(event)
job = event.payload[:job]
ex = event.payload[:exception_object]
ex = event.payload[:exception_object] || job.enqueue_error

if ex
error do
Expand All @@ -26,7 +26,7 @@ def enqueue(event)

def enqueue_at(event)
job = event.payload[:job]
ex = event.payload[:exception_object]
ex = event.payload[:exception_object] || job.enqueue_error

if ex
error do
Expand Down
14 changes: 14 additions & 0 deletions activejob/test/cases/logging_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,20 @@ def test_enqueue_in_job_logging
skip
end

def test_enqueue_log_when_enqueue_error_is_set
EnqueueErrorJob.disable_test_adapter

EnqueueErrorJob.perform_later
assert_match(/Failed enqueuing EnqueueErrorJob to EnqueueError\(default\): ActiveJob::EnqueueError \(There was an error enqueuing the job\)/, @logger.messages)
end

def test_enqueue_at_log_when_enqueue_error_is_set
EnqueueErrorJob.disable_test_adapter

EnqueueErrorJob.set(wait: 1.hour).perform_later
assert_match(/Failed enqueuing EnqueueErrorJob to EnqueueError\(default\): ActiveJob::EnqueueError \(There was an error enqueuing the job\)/, @logger.messages)
end

def test_for_tagged_logger_support_is_consistent
set_logger ::Logger.new(nil)
OverriddenLoggingJob.perform_later "Dummy"
Expand Down

0 comments on commit ac44103

Please sign in to comment.