parent
8ef1d4266d
commit
296d625841
@ -0,0 +1,39 @@ |
||||
class DelayedJobNeverRanCheck < OkComputer::Check |
||||
attr_reader :threshold |
||||
|
||||
def initialize(minute_threshold) |
||||
@threshold = minute_threshold.to_i |
||||
end |
||||
|
||||
def check |
||||
never_ran = Delayed::Job.where('run_at < ?', threshold.minutes.ago).count |
||||
|
||||
if never_ran.zero? |
||||
mark_message "All previous jobs have completed within the past #{threshold} minutes." |
||||
else |
||||
mark_failure |
||||
mark_message "#{never_ran} jobs waiting to be executed for more than #{threshold} minutes" |
||||
end |
||||
end |
||||
end |
||||
|
||||
# Mount at /health_checks |
||||
OkComputer.mount_at = 'health_checks' |
||||
|
||||
# Register delayed_job backed up test |
||||
dj_max = OpenProject::Configuration.health_checks_jobs_queue_count_threshold |
||||
OkComputer::Registry.register "delayed_jobs_backed_up", |
||||
OkComputer::DelayedJobBackedUpCheck.new(0, dj_max) |
||||
|
||||
dj_never_ran_max = OpenProject::Configuration.health_checks_jobs_never_ran_minutes_ago |
||||
OkComputer::Registry.register "delayed_jobs_never_ran", |
||||
DelayedJobNeverRanCheck.new(dj_never_ran_max) |
||||
|
||||
# Make dj backed up optional due to bursts |
||||
OkComputer.make_optional %w(delayed_jobs_backed_up) |
||||
|
||||
# Check if authentication required |
||||
authentication_password = OpenProject::Configuration.health_checks_authentication_password |
||||
if authentication_password.present? |
||||
OkComputer.require_authentication('health_checks', authentication_password) |
||||
end |
Loading…
Reference in new issue