Skip to content

Commit 8102fb8

Browse files
committed
Add last_enqueued_time and previous_time to RecurringTask
To aid with monitoring for delayed recurring tasks.
1 parent 090edb9 commit 8102fb8

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

app/models/solid_queue/recurring_task.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ class RecurringTask < Record
1212

1313
scope :static, -> { where(static: true) }
1414

15+
has_many :recurring_executions, foreign_key: :task_key, primary_key: :key
16+
1517
mattr_accessor :default_job_class
1618
self.default_job_class = RecurringJob
1719

@@ -53,6 +55,18 @@ def next_time
5355
parsed_schedule.next_time.utc
5456
end
5557

58+
def previous_time
59+
parsed_schedule.previous_time.utc
60+
end
61+
62+
def last_enqueued_time
63+
if recurring_executions.loaded?
64+
recurring_executions.map(&:run_at).max
65+
else
66+
recurring_executions.maximum(:run_at)
67+
end
68+
end
69+
5670
def enqueue(at:)
5771
SolidQueue.instrument(:enqueue_recurring_task, task: key, at: at) do |payload|
5872
active_job = if using_solid_queue_adapter?

0 commit comments

Comments
 (0)