Ошибка 401 во время обработки в очереди стёрли мои офлайн-данные — вот как это исправить
Краткое содержание
Я разрабатываю приложение с приоритетом работы в автономном режиме, где устройства захватывают события локально и синхронизируют их при восстановлении соединения. Простая обработка очереди: итерируешь очередь, отправляешь каждый элемент через POST, помечаешь успех или неудачу. Кажется нормально... пока не происходит реальный сбой. Проблема: Во время длительного простоя (потеря питания, обрыв сетевого сегмента) токен аутентификации истекает, а в очереди данные накапливаются. Когда соединение восстанавливается: начинается обработка; первые несколько элементов проходят успешно, затем посреди цикла возникает ошибка 401. Простая реализация рассматривает это как обычный сбой и продолжает работу → все, что идет после этой точки, помечается как окончательно неудачное. Ни исключений, ни падений, ни оповещений — просто потеря данных. Корректные события, захваченные правильно, молча выбрасываются. Решение (паттерн, а не исправление): Это потребовало координации трех элементов: 1. Обрабатывать 401 как границу, а не как сбой. Вместо того чтобы помечать элементы как неудачные, нужно немедленно остановить процесс и сохранить все необработанное. Вернуть что-то вроде { authExpired: true, remainingCount }, чтобы вызывающая функция точно знала, что произошло. 2. Mo
Полный текст статьи пока не загружен.