diff --git a/app/models/solid_queue/job/executable.rb b/app/models/solid_queue/job/executable.rb index b0a4cb93..d47442bb 100644 --- a/app/models/solid_queue/job/executable.rb +++ b/app/models/solid_queue/job/executable.rb @@ -41,15 +41,11 @@ def dispatch_all_one_by_one(jobs) end def successfully_dispatched(jobs) - dispatched_and_ready(jobs) + dispatched_and_blocked(jobs) - end - - def dispatched_and_ready(jobs) - where(id: ReadyExecution.where(job_id: jobs.map(&:id)).pluck(:job_id)) - end - - def dispatched_and_blocked(jobs) - where(id: BlockedExecution.where(job_id: jobs.map(&:id)).pluck(:job_id)) + job_ids = jobs.map(&:id) + dispatched_ids = ReadyExecution.where(job_id: job_ids).pluck(:job_id) + + BlockedExecution.where(job_id: job_ids).pluck(:job_id) + dispatched_ids = dispatched_ids.to_set + jobs.select { |job| dispatched_ids.include?(job.id) } end end diff --git a/app/models/solid_queue/job/schedulable.rb b/app/models/solid_queue/job/schedulable.rb index 8ce2a4a9..32708de6 100644 --- a/app/models/solid_queue/job/schedulable.rb +++ b/app/models/solid_queue/job/schedulable.rb @@ -23,7 +23,8 @@ def schedule_all_at_once(jobs) end def successfully_scheduled(jobs) - where(id: ScheduledExecution.where(job_id: jobs.map(&:id)).pluck(:job_id)) + scheduled_ids = ScheduledExecution.where(job_id: jobs.map(&:id)).pluck(:job_id).to_set + jobs.select { |job| scheduled_ids.include?(job.id) } end end