Обработка ошибок в Make: Retry, Break, Rollback и Ignore
Продвинутое3 минРедакция Innovialabs
Коротко
В Make к модулю добавляют маршрут-обработчик ошибок и завершают его директивой; для нестабильных API используйте Break с автоповтором и хранением незавершённых выполнений, а перед директивой ставьте оповещение.
Как Make обрабатывает ошибки
Когда модуль падает, а обработчика нет, сценарий останавливается с ошибкой. Если такое повторяется несколько запусков подряд, Make может отключить сценарий, и данные перестанут обрабатываться, пока кто-то не заметит.
Чтобы управлять поведением, к модулю добавляют маршрут-обработчик ошибок: правый клик по модулю → Add error handler. Маршрут срабатывает только при ошибке этого модуля и заканчивается директивой — инструкцией, что делать дальше.
Пять директив и когда их выбирать
| Директива | Что происходит | Статус запуска | Когда использовать |
|---|---|---|---|
| Ignore | текущий бандл отбрасывается, остальные обрабатываются | успех | ошибка не важна: например, нет необязательного поля |
| Resume | модуль «подменяется» заданным вами результатом, поток идёт дальше | успех | есть разумное значение по умолчанию |
| Break | бандл сохраняется как незавершённое выполнение, можно включить автоповтор | предупреждение | временные сбои: таймауты, лимиты API |
| Rollback | сценарий останавливается, транзакционные модули откатываются | ошибка | данные должны записаться целиком или никак |
| Commit | сценарий останавливается, уже сделанное фиксируется | успех | нужно остановиться, но сохранить результат |
Важно: Rollback и Commit работают только для модулей с поддержкой транзакций (например, хранилища данных Make и некоторые базы данных). Отправленное письмо или созданную в CRM сделку Rollback не отменит.
Retry: как повторять запросы к нестабильному API
Отдельной директивы Retry нет — повторы делаются через Break:
- В настройках сценария включите Allow storing of incomplete executions.
- Добавьте к модулю обработчик и поставьте директиву Break.
- Включите Automatically complete execution, задайте число попыток и интервал между ними.
Make сохранит упавший бандл и сам запустит его позже с того модуля, где произошла ошибка. Остальные бандлы при этом продолжают обрабатываться.
Для части временных ошибок (проблемы соединения, превышение лимита запросов) Make может повторять незавершённые выполнения и без явного Break, если хранение включено. Но лучше задавать поведение явно — так понятнее, что произойдёт.
Практические правила для повторов:
- Интервал больше окна лимита. Если API ограничивает запросы в минуту, повтор через секунды не поможет.
- Идемпотентность. Повтор может создать дубль. Перед созданием записи ищите её по уникальному ключу (email, номер заказа) или используйте upsert.
- Ограниченное число попыток. Бесконечные повторы ошибки валидации ничего не исправят.
Незавершённые выполнения
Вкладка Incomplete executions у сценария — это очередь бандлов, которые не дошли до конца. Каждое можно открыть, исправить данные или маппинг и запустить заново, либо удалить.
Это главная защита от тихой потери данных: заявка не исчезает, а ждёт решения. Но очередь нужно просматривать — иначе она просто копится.
Ошибки должны быть громкими
Обработчик без уведомления — тот же тихий сбой. Схема, которая работает:
- Маршрут обработчика: модуль Telegram, Slack или email с текстом ошибки, названием сценария и ключевыми полями бандла (ID заказа, клиент).
- Затем директива: Break для временных ошибок, Rollback для критичных.
- На маршрут можно поставить фильтр по типу или тексту ошибки, чтобы разделить, например, ошибки данных и проблемы соединения.
Дополнительно:
- включите уведомления Make об ошибках и отключении сценариев в настройках профиля;
- задайте разумный лимит последовательных ошибок в настройках сценария;
- для данных о клиентах включите опцию конфиденциальности, чтобы содержимое бандлов не хранилось в логах.
Частые ошибки
- Ignore везде «чтобы не падало». Сценарий зелёный, а заказы теряются.
- Rollback для внешних API, которые откатить нельзя.
- Break без включённого хранения незавершённых выполнений.
- Нет алерта: о проблеме узнают от клиента.