discourse/app/jobs/scheduled/problem_checks.rb
Ted Johansson 47e58357b6
DEV: Parallel scheduled admin checks (#24190)
This PR does some preparatory refactoring of scheduled admin checks in order for us to be able to do custom retry strategies for some of them.

Instead of running all checks in sequence inside a single, scheduled job, the scheduled job spawns one new job per check.

In order to be concurrency-safe, we need to change the existing Redis data structure from a string (of serialized JSON) to a list of strings (of serialized JSON).
2023-11-03 09:05:29 +08:00

20 lines
654 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 for this scheduled job run
# call AdminDashboardData.add_scheduled_problem_check
class ProblemChecks < ::Jobs::Scheduled
sidekiq_options retry: false
every 10.minutes
def execute(_args)
# This way if the problems have been solved in the meantime, then they will
# not be re-added by the relevant checker, and will be cleared.
AdminDashboardData.clear_found_scheduled_check_problems
AdminDashboardData.execute_scheduled_checks
end
end
end