Поведение планировщика в случае сбоев, перезапусков и других нештатных ситуациях

Подскажите, пожалуйста, есть ли описание поведения планировщика Альфы при сбоях, перезапусках и нештатных ситуациях? И где можно найти эту информацию.

1 Like

При работе триггеров планировщика есть несколько вариантов политики запуска задач, время запуска которых было пропущено по некоторым причинам (например, если приложение было выключено или неактивно, как в сегодняшнем случае). Существуют следующие политики:
Для всех типов триггеров

  • Игнорирование осечек: Все пропущенные запуски задачи будут запущены, как только это станет возможным, при этом будет считаться, что они сработали в назначенное время
  • “Интеллектуальная политика” - собственный динамический алгоритм используемого движка Quartz, основанная на типе триггера и других параметрах (подробнее см. https://www.quartz-scheduler.net/documentation/quartz-2.x/tutorial/more-about-triggers.html)
    Простые триггеры:
  • Немедленное выполнение пропущенной задачи один раз независимо от количества пропущенных запусков
  • Перепланировать задачу с текущего момента с количеством запусков, которое осталось до конца времени работы триггера (приводит к переписыванию настроек триггера)
  • Перепланировать задачу с текущего момента с количеством запусков, которое оставалось до конца времени работы триггера до первой осечки (приводит к переписыванию триггера)
  • Перепланировать задачу с момента следующего запланированного запуска с количеством запусков, которое оставалось до конца времени работы триггера до первой осечки (приводит к переписыванию триггера)
  • Перепланировать задачу с момента следующего запланированного запуска с количеством запусков, которое осталось до конца времени работы триггера (приводит к переписыванию настроек триггера)
    Триггеры с выражением cron, а также триггеры, настроенные по календарю (дни недели и т.д.):
  • Единоразовый немедленный запуск
  • Пропуск осечки и дальнейшая работа в соответствии с текущими настройками (“ничего не делать”)

В текущей реализации AlphaBI эти политики зависят от типа триггера и реализованы следующим образом:

I. Простые триггеры

  • Если количество оставшихся повторений триггера задано и равно 0, триггер запускается единоразово
  • Если количество повторений не задано или не равно 0, а интервал повторений задачи меньше минуты, происходит “игнорирование осечек” (см. 1 вариант политики)
  • Во всех остальных случаях происходит перепланирование триггера на текущее время с количеством запусков, которое оставалось до момента осечки

II Триггеры, настраиваемые по дням недели

  • Если интервал повторений задачи меньше минуты, осечки игнорируются, триггер работает так, как будто ничего не произошло
  • В остальных случаях происходит единоразовый запуск задачи и дальнейшее выполнение триггера по расписанию

III Триггеры с выражением cron

  • Во всех случаях работает политика “единоразовый запуск задачи и дальнейшее выполнение триггера по расписанию”

К сожалению, поведение нигде не задокументировано, я описываю его по исходникам Альфы.

2 Likes