scheduler.rb 750 B

12345678910111213141516171819202122232425262728293031323334
  1. # Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
  2. class Scheduler < ApplicationModel
  3. include ChecksHtmlSanitized
  4. include HasTimeplan
  5. sanitized_html :note
  6. scope :failed_jobs, -> { where(status: 'error', active: false) }
  7. # Jobs running more often than every 5 minutes are kept in a continuous thread.
  8. #
  9. # @example
  10. # Scheduler.runs_as_persistent_loop?
  11. #
  12. # return [true]
  13. def runs_as_persistent_loop?
  14. active && period && period <= 5.minutes
  15. end
  16. # This function restarts failed jobs to retry them
  17. #
  18. # @example
  19. # Scheduler.restart_failed_jobs
  20. #
  21. # return [true]
  22. def self.restart_failed_jobs
  23. failed_jobs.each do |job|
  24. job.update!(active: true)
  25. end
  26. true
  27. end
  28. end