Подскажите, пожалуйста, есть ли описание поведения планировщика Альфы при сбоях, перезапусках и нештатных ситуациях? И где можно найти эту информацию.
1 лайк
При работе триггеров планировщика есть несколько вариантов политики запуска задач, время запуска которых было пропущено по некоторым причинам (например, если приложение было выключено или неактивно, как в сегодняшнем случае). Существуют следующие политики:
Для всех типов триггеров
- Игнорирование осечек: Все пропущенные запуски задачи будут запущены, как только это станет возможным, при этом будет считаться, что они сработали в назначенное время
- “Интеллектуальная политика” - собственный динамический алгоритм используемого движка 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 лайка