mirror of
https://github.com/discourse/discourse.git
synced 2024-12-30 17:36:27 +08:00
e60876ce49
When running checks, we look to the existing problem check trackers and try to grab their ProblemCheck classes. In some cases this is no longer in the problem check repository, e.g. when the check was part of a plugin that has been uninstalled. In the case where the check was scheduled, this would lead to an error in one of the jobs
31 lines
838 B
Ruby
31 lines
838 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Jobs
|
|
# This job runs all of the scheduled problem checks for the admin dashboard
|
|
# on a regular basis. To add a problem check, add a new class that inherits
|
|
# the `ProblemCheck` base class.
|
|
class RunProblemChecks < ::Jobs::Scheduled
|
|
sidekiq_options retry: false
|
|
|
|
every 10.minutes
|
|
|
|
def execute(_args)
|
|
scheduled_checks =
|
|
ProblemCheckTracker.all.filter_map do |tracker|
|
|
tracker.check if eligible_for_this_run?(tracker)
|
|
end
|
|
|
|
scheduled_checks.each do |check|
|
|
Jobs.enqueue(:run_problem_check, check_identifier: check.identifier.to_s)
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def eligible_for_this_run?(tracker)
|
|
tracker.check.present? && tracker.check.enabled? && tracker.check.scheduled? &&
|
|
tracker.ready_to_run?
|
|
end
|
|
end
|
|
end
|