Skip to content

Commit 7ded710

Browse files
committed
Avoid extra queries for dynamic tasks for process metadata and procline
We need the dynamic task keys there and were doing a new query every time. We only need to do a query when explicitly reloading them.
1 parent b4f7c99 commit 7ded710

2 files changed

Lines changed: 15 additions & 9 deletions

File tree

lib/solid_queue/scheduler.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def unschedule_recurring_tasks
5353
end
5454

5555
def reload_dynamic_schedule
56-
recurring_schedule.reload_dynamic_tasks
56+
recurring_schedule.reschedule_dynamic_tasks
5757
reload_metadata
5858
end
5959

lib/solid_queue/scheduler/recurring_schedule.rb

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ def schedule_tasks
2525
wrap_in_app_executor do
2626
persist_static_tasks
2727
reload_static_tasks
28+
reload_dynamic_tasks
2829
end
2930

3031
configured_tasks.each do |task|
@@ -42,11 +43,12 @@ def unschedule_tasks
4243
end
4344

4445
def task_keys
45-
static_task_keys + dynamic_task_keys
46+
configured_tasks.map(&:key)
4647
end
4748

48-
def reload_dynamic_tasks
49+
def reschedule_dynamic_tasks
4950
wrap_in_app_executor do
51+
reload_dynamic_tasks
5052
schedule_created_dynamic_tasks
5153
unschedule_deleted_dynamic_tasks
5254
end
@@ -60,19 +62,15 @@ def static_task_keys
6062
end
6163

6264
def dynamic_tasks
63-
dynamic_tasks_enabled? ? RecurringTask.dynamic : RecurringTask.none
64-
end
65-
66-
def dynamic_task_keys
67-
dynamic_tasks.pluck(:key)
65+
@dynamic_tasks ||= load_dynamic_tasks
6866
end
6967

7068
def dynamic_tasks_enabled?
7169
@dynamic_tasks_enabled
7270
end
7371

7472
def schedule_created_dynamic_tasks
75-
dynamic_tasks.where.not(key: scheduled_tasks.keys).each do |task|
73+
RecurringTask.dynamic.where.not(key: scheduled_tasks.keys).each do |task|
7674
schedule_task(task)
7775
end
7876
end
@@ -93,6 +91,14 @@ def reload_static_tasks
9391
@static_tasks = RecurringTask.static.where(key: static_task_keys).to_a
9492
end
9593

94+
def reload_dynamic_tasks
95+
@dynamic_tasks = load_dynamic_tasks
96+
end
97+
98+
def load_dynamic_tasks
99+
dynamic_tasks_enabled? ? RecurringTask.dynamic.to_a : []
100+
end
101+
96102
def schedule(task)
97103
scheduled_task = Concurrent::ScheduledTask.new(task.delay_from_now, args: [ self, task, task.next_time ]) do |thread_schedule, thread_task, thread_task_run_at|
98104
thread_schedule.schedule_task(thread_task)

0 commit comments

Comments
 (0)