Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Active Job log message to correctly report a job failed to enqueue when the adapter raises an ActiveJob::EnqueueError #47865

Merged
merged 1 commit into from
Sep 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 5 additions & 0 deletions activejob/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
* Fix Active Job log message to correctly report a job failed to enqueue
when the adapter raises an `ActiveJob::EnqueueError`.

*Ben Sheldon*

* Add `after_discard` method.

This method lets job authors define a block which will be run when a job is about to be discarded. For example:
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 @@ -8,7 +8,7 @@ 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 @@ -28,7 +28,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 @@ -245,6 +245,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