Skip to content

Commit eb026d3

Browse files
committed
Release orphaned executions just once, before booting the supervisor
Instead of periodically.
1 parent 18c12c5 commit eb026d3

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed
Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,34 @@
11
module SolidQueue
22
module Supervisor::Maintenance
3+
extend ActiveSupport::Concern
4+
5+
included do
6+
after_boot :release_orphaned_executions
7+
end
8+
39
private
10+
def launch_maintenance_task
11+
@maintenance_task = Concurrent::TimerTask.new(run_now: true, execution_interval: SolidQueue.process_alive_threshold) do
12+
prune_dead_processes
13+
end
414

5-
def launch_maintenance_task
6-
@maintenance_task = Concurrent::TimerTask.new(run_now: true, execution_interval: SolidQueue.process_alive_threshold) do
7-
prune_dead_processes
8-
release_orphaned_executions
9-
end
15+
@maintenance_task.add_observer do |_, _, error|
16+
handle_thread_error(error) if error
17+
end
1018

11-
@maintenance_task.add_observer do |_, _, error|
12-
handle_thread_error(error) if error
19+
@maintenance_task.execute
1320
end
1421

15-
@maintenance_task.execute
16-
end
17-
18-
def stop_maintenance_task
19-
@maintenance_task&.shutdown
20-
end
22+
def stop_maintenance_task
23+
@maintenance_task&.shutdown
24+
end
2125

22-
def prune_dead_processes
23-
wrap_in_app_executor { SolidQueue::Process.prune }
24-
end
26+
def prune_dead_processes
27+
wrap_in_app_executor { SolidQueue::Process.prune }
28+
end
2529

26-
def release_orphaned_executions
27-
wrap_in_app_executor { SolidQueue::ClaimedExecution.orphaned.release_all }
28-
end
30+
def release_orphaned_executions
31+
wrap_in_app_executor { SolidQueue::ClaimedExecution.orphaned.release_all }
32+
end
2933
end
3034
end

0 commit comments

Comments
 (0)