From d2766e6671952e74231b0aaf21a8eac324a05d34 Mon Sep 17 00:00:00 2001 From: Daniel Morton Date: Wed, 18 Mar 2020 16:18:37 -0400 Subject: [PATCH] Log when enumerator has nothing to iterate --- lib/job-iteration/iteration.rb | 7 +++++++ test/unit/active_job_iteration_test.rb | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/lib/job-iteration/iteration.rb b/lib/job-iteration/iteration.rb index b53fc749..739a6d3e 100644 --- a/lib/job-iteration/iteration.rb +++ b/lib/job-iteration/iteration.rb @@ -116,8 +116,10 @@ def interruptible_perform(*arguments) def iterate_with_enumerator(enumerator, arguments) arguments = arguments.dup.freeze + found_record = false enumerator.each do |object_from_enumerator, index| record_unit_of_work do + found_record = true each_iteration(object_from_enumerator, *arguments) self.cursor_position = index end @@ -128,6 +130,11 @@ def iterate_with_enumerator(enumerator, arguments) return false end + logger.info( + "[JobIteration::Iteration] Enumerator found nothing to iterate! " \ + "(times_interrupted: #{times_interrupted}, cursor_position: #{cursor_position})" + ) unless found_record + true end diff --git a/test/unit/active_job_iteration_test.rb b/test/unit/active_job_iteration_test.rb index 543ee59d..44d5e939 100644 --- a/test/unit/active_job_iteration_test.rb +++ b/test/unit/active_job_iteration_test.rb @@ -585,6 +585,15 @@ def test_log_completion_data end end + def test_log_no_iterations + Product.delete_all + push(ActiveRecordIterationJob) + + assert_logged(%([JobIteration::Iteration] Enumerator found nothing to iterate!)) do + work_one_job + end + end + def test_aborting_in_each_iteration_job_will_execute_on_complete_callback push(AbortingActiveRecordIterationJob) work_one_job