Как Albato обрабатывает ошибки
Общая информация
Albato делает HTTP-запросы в сторонние системы, из-за чего могут возникать ошибки. Например, если устарели авторизационные данные, или какие-то поля заполнены неправильно, что при запросе в API вернет ошибку. Также это может быть вызвано недоступностью сервера, куда уходит запрос.
Каждый раз, когда Albato выполняет запрос, проверяется текст ответа — если в тексте ответа есть явное указание на ошибку, то операция считается ошибочной. Ошибки могут возникнуть как в связке, так и при создании/обновлении подключения. В связке/подключении выводится тот текст, который в ответ прислал сервер. Если в связке произошла ошибка, Albato отправит на e-mail уведомление.
Существует система «штрафных баллов», которые накапливаются при определённых условиях и могут остановить связку в случае накопления максимального количества баллов. Прочитать про то, как работает система штрафных баллов можно в конце статьи в разделе Как работает система штрафных баллов.
Если связка ловит исключительно только ошибки, она будет остановлена. При этом каждую ошибку можно запустить повторно. Подробнее про условия, при которых связка будет остановлена, можно прочитать в конце статьи в разделе Остановка связок.
Типы ошибок
Ошибки делятся на несколько основных типов:
- Ошибка партнёра (сервиса) — возникает в случае, если после выполнения Albato исходящего HTTP-запроса в сервис, этот сервис вернул в ответ указание на то, что запрос является ошибочным, а также вернул текст этой ошибки.
- Ошибка тайм-аута — возникает в том случае, если Albato не получил ответ на свой запрос. Стандартно Albato ждёт ответа 10 секунд. Если ответ не был получен, то запрос считается ошибочным, и выводится текст ошибки «Превышено время ожидания запроса к {{URL}}». Такой тип ошибок также автоматически отправляется на переотправку данных и начисляет штрафные баллы связке.
- Ошибка соединения — появляется в случае, если с сервером явно не получается установить соединение. Например, сторонняя система дала сбой и её сервера недоступны. В таком случае выводится текст ошибки «Не удалось установить соединение с {{URL}}».
Ручная переотправка ошибок
Каждую ошибку можно попытаться перезапустить вручную, при этом все данные будут собраны заново. То есть, если после получения ошибки настройки шага были отредактированы, то в момент переотправки, будут уже передаваться новые настройки (Например, если был изменен набор полей от предыдущего шага). Данный механизм будет работать только в том случае, если позиция шага не была изменена после получения ошибки.
Для переотправки нажмите в журнале связки на кнопку переотправки:
После нажатия на кнопку, Albato в течение 5 минут попробует повторно передать данные — дополнительная запись появится в этом же блоке журнала ниже. При этом, если после ошибочного шага есть следующие шаги, они также будут обработаны.
Вручную перезапускать ошибки можно неограниченное количество раз, но важно, чтобы сама связка была запущена.
Автоматическая переотправка ошибок
Автоматически переотправляются только ошибки типа Ошибка тайм-аута.
В таком случае считается, что сервер временно недоступен, но может быть доступен позже.
Если была получена ошибка с типом Ошибка таймаута, то после факта ошибки, Albato попытается 5 раз переотправить эту ошибку самостоятельно со следующим интервалом времени:
- Через 5 минут
- Через 15 минут
- Через 30 минут
- Через 60 минут
- Через 60 минут
Если за 5 раз тайм-аут не исчез, то попытки прекратятся, но можно будет, спустя время, попытаться вручную переотправить ошибку. После 5 попытки будет отправлено письмо-уведомление. При этом все автоматические переотправки не начисляют штрафные баллы в случае повторения тайм-аута.
Уведомления об ошибках
Если в настройках профиля личного кабинета стоит галочка Сообщать об ошибках, то Albato будет каждый час присылать письмо на e-mail, указанный при регистрации (или на дополнительный e-mail, при наличии). В письме будет список связок, в которых произошла ошибка, с указанием количества ошибок и временного периода их получения.
Если ошибка имеет тип Ошибка тайм-аута, то письмо не будет отправлено до тех пор, пока не израсходуются все 5 попыток автоматической переотправки.
Как работает система штрафных баллов
Выше мы упоминали о том, что у каждой связки есть свой набор штрафных баллов. Начисляются они конкретной связке. Штрафной балл будет начислен за следующие типы ошибок:
- Ошибка тайм-аута
- Ошибка соединения
Каждый раз, когда в связке происходит ошибка указанных типов, ей начисляется ровно 1 балл. При этом работа связки будет замедляться или остановится окончательно. Существует несколько порогов достижения штрафных баллов.
Если у связки API-триггер, то при достижении:
- 3 баллов — пауза между запуском триггера увеличивается на 10 минут
- 10 баллов — пауза между запуском триггера увеличивается на 30 минут
- 15 баллов — пауза между запуском триггера увеличивается на 60 минут
- 20 баллов — связка окончательно останавливается
Если запрос в связке выполняется успешно (Неважно, получил он данные или нет — это может быть пустой запрос «Нет новых данных» или если триггер не прошёл фильтр), то порог сбрасывается ровно на 1 шаг назад. То есть, если было набрано 10 баллов, то следующий запуск триггера будет выполнен через 30 минут, но если запрос будет выполнен успешно, то количество баллов сбросится до 3, и пауза будет уже 10 минут, если через 10 минут снова будет удачный запрос — баллы обнулятся.
Связка которая остановилась, может быть запущена только вручную.
Если у связки триггер webhook, то работа связки не замедляется, но баллы будут накапливаться. Так как невозможно отследить и заморозить запросы от другой системы, то при достижении какого-то порога, вместо увеличении паузы запуска, такое же время баллы просто не будут начисляться. Но если тайм-аут будет сохраняться продолжительное время — связка остановится.
При этом нет разницы, какой шаг получит ошибку — триггер или действие — балл будет начислен в любом случае.
Если в связке в явном виде идут только ошибочные запросы и при этом нет удачных, спустя некоторое время связка будет остановлена. Запустить обратно её можно будет только вручную, исправив заранее ошибки. В данном случае тип ошибки уже не будет играть роли, будут учитываться любые ошибки в связке.
Существует общая система проверок связок на ошибки. Все проверки выполняются ровно в полдень, по часовому поясу, который выбран в профиле. Существует два типа проверок.
Раз в 24 часа
Если в связке в целом было больше 50 выполнений связки и каждое из выполнений имело в себе ошибку, при этом не произошло ни одного удачного цикла (где все шаги выполнены успешно) — такая связка будет остановлена. В случае если выполнений связки было меньше 50, или хотя бы 1 раз все шаги выполнились успешно — связка не останавливается. При остановке связки отправляется письмо-уведомление.
Раз в 7 дней
Если в связке за 7 дней имеются только ошибочные запросы и ни одного удачного, то связка останавливается. В данном случае количество запросов и ошибок уже не играет роли. То есть, если связка за неделю выполнилась только 1 раз и получила ошибку, она будет остановлена, но если будет хотя бы один любой удачный запрос (даже который не получил данных), связка остановлена не будет. При остановке связки отправляется письмо-уведомление.