Подход к разбившимся рабочим в amazon swf

В настоящее время мы реализуем рабочий процесс в Amazon SWF, в котором мы отправляем задания/выполнение рабочего процесса из нашего веб-приложения. Все было довольно быстро и безболезненно настроено с использованием фреймворка Ruby Flow. До тех пор, пока решающие/работающие действия не падают, мы, кажется, можем изящно обрабатывать большинство проблем/исключений.

Мой вопрос: что является обычной практикой для сценария, когда решающий процесс аварийно завершает работу на полпути выполнения рабочего процесса? Если задача не выполняется таким образом, можно ли отправить уведомление SNS (я не видел примеров) или что-то еще, чтобы указать другому процессу, что произошел неожиданный сбой/сбой?


person tonyl7126    schedule 26.01.2016    source источник


Ответы (2)


Существуют различные типы отказов «решателя».

  1. Workflow workflow аварийно завершает работу при обработке решения. Задача решения автоматически переназначается после указанного тайм-аута. Убедитесь, что тип рабочего процесса defaultTaskStartToCloseTimeout установлен не слишком высоко. Если этот сбой не связан с корректностью кода, то перепланированная задача обрабатывается и выполнение рабочего процесса продолжается в обычном режиме.

  2. Рабочий процесс не аварийно завершает работу, но само выполнение рабочего процесса завершается со сбоем. В этом случае вы можете использовать ListClosedWorkflowExecutions для подсчета таких неудачных рабочих процессов.

  3. Workflow worker не аварийно завершает работу, но задача принятия решения не может быть завершена как RespondDecisionTaskCompleted не работает из-за ошибки в фреймворке Flow. Поскольку с точки зрения SWF задача никогда не завершается, она в какой-то момент помечается как истекшая по времени и перепланируемая. Поскольку ошибка все еще присутствует, новая задача снова никогда не завершается и переносится, и так далее. Выполнение рабочего процесса, в котором возникает такая проблема, имеет историю с хвостом, который состоит из повторяющихся событий «задача решения запланирована, время ожидания задачи решения истекло». Если ваш рабочий процесс имеет известное ограничение времени выполнения, то лучший способ обнаружить эту проблему — установить разумное значение executionStartToCloseTimeout и искать время выполнения рабочего процесса с истекшим временем ожидания. Если время ожидания задачи принятия решения установлено слишком низким, такие рабочие процессы также могут достичь предела размера истории до истечения времени ожидания выполнения.

person Maxim Fateev    schedule 26.01.2016

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

person Rohit    schedule 26.01.2016