Для действия, вызываемого в цикле, применяется ли политика повторных попыток для этого действия к каждому запуску?

#cadence-workflow #temporal-workflow

Вопрос:

Для данного рабочего процесса с действием A с максимальным количеством повторных попыток, равным 3, если у меня есть следующий фрагмент кода:

 for (String type: types) {
    activityA.process(type);
}
 

и типы в этом случае [«тип1», «тип2», «тип3»]
Так что, если ActivityA успешно обработал тип1 и начинает обрабатывать тип2 и по какой-то причине не удается,

  1. Будет ли политика повторных попыток для ActivityA применяться каждый раз при запуске типа или это будет 3 повторные попытки для всех типов действий?
  2. Если рабочий процесс завершится неудачно при выполнении type2, будет ли рабочий процесс перезапущен с самого начала и снова обработает type1 или он начнется с type2?

Ответ №1:

Для 1. Политика повторных попыток будет работать независимо для каждого действия. Таким образом, у каждого типа будет три повторных попытки.

Для 2. Сбой рабочего процесса-это конечное состояние для выполнения рабочего процесса. Это не будет повторяться автоматически, если вы не укажете политику повторных попыток при запуске рабочего процесса. При повторной попытке рабочего процесса. Все начнется с самого начала.

См. также https://cadenceworkflow.io/docs/concepts/workflows/#workflow-retries

Или, может быть, вы спросили, если рабочий выходит из строя вместо рабочего процесса? Каденция очень отказоустойчива к сбоям рабочего процесса, рабочий процесс автоматически возобновится с того, что он оставил до смерти предыдущего работника.

См. также https://cadenceworkflow.io/docs/concepts/workflows/#state-recovery-and-determinism