Skip to content

Commit 1caeaa3

Browse files
committed
Ensure enqueued count from adapter is an int
This is a small change to handle situations where `nil` is passed back from the adapter.
1 parent 4060253 commit 1caeaa3

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

activejob/lib/active_job/log_subscriber.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def enqueue_all(event)
5050
info do
5151
jobs = event.payload[:jobs]
5252
adapter = event.payload[:adapter]
53-
enqueued_count = event.payload[:enqueued_count]
53+
enqueued_count = event.payload[:enqueued_count].to_i
5454

5555
if enqueued_count == jobs.size
5656
enqueued_jobs_message(adapter, jobs)

activejob/test/cases/logging_test.rb

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,25 @@ def test_enqueue_all_job_logging
369369
assert_match(/Enqueued 3 jobs to .+ \(2 HelloJob, 1 LoggingJob\)/, @logger.messages)
370370
end
371371

372+
def test_enqueue_all_graceful_failure_when_enqueued_count_is_nil
373+
original_adapter = ActiveJob::Base.queue_adapter
374+
375+
stubbed_inline_adapter = ActiveJob::QueueAdapters::InlineAdapter.new
376+
def stubbed_inline_adapter.respond_to?(method_name, include_private = false)
377+
method_name == :enqueue_all || super
378+
end
379+
def stubbed_inline_adapter.enqueue_all(*)
380+
nil
381+
end
382+
383+
ActiveJob::Base.queue_adapter = stubbed_inline_adapter
384+
385+
ActiveJob.perform_all_later(LoggingJob.new("Dummy"), HelloJob.new("Jamie"), HelloJob.new("John"))
386+
assert_match(/Failed enqueuing 3 jobs to .+/, @logger.messages)
387+
ensure
388+
ActiveJob::Base.queue_adapter = original_adapter
389+
end
390+
372391
def test_enqueue_log_level
373392
@logger.level = WARN
374393
HelloJob.perform_later "Dummy"

0 commit comments

Comments
 (0)