mirror of
https://github.com/discourse/discourse.git
synced 2024-12-02 10:53:43 +08:00
47e58357b6
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).
27 lines
881 B
Ruby
27 lines
881 B
Ruby
# frozen_string_literal: true
|
|
|
|
RSpec.describe Jobs::ProblemChecks do
|
|
before { Jobs.run_immediately! }
|
|
|
|
after do
|
|
Discourse.redis.flushdb
|
|
AdminDashboardData.reset_problem_checks
|
|
end
|
|
|
|
it "starts with a blank slate every time the checks are run to avoid duplicate problems and to clear no longer firing problems" do
|
|
problem_should_fire = true
|
|
AdminDashboardData.reset_problem_checks
|
|
AdminDashboardData.add_scheduled_problem_check(:test_identifier) do
|
|
if problem_should_fire
|
|
problem_should_fire = false
|
|
AdminDashboardData::Problem.new("yuge problem", priority: "high")
|
|
end
|
|
end
|
|
|
|
described_class.new.execute(nil)
|
|
expect(AdminDashboardData.load_found_scheduled_check_problems.count).to eq(1)
|
|
described_class.new.execute(nil)
|
|
expect(AdminDashboardData.load_found_scheduled_check_problems.count).to eq(0)
|
|
end
|
|
end
|