По данным статус-страницы Cloudflare, с 21:48 UTC 26 октября до 01:15 UTC 27 октября (3 ч 26 мин) действовал инцидент «Delayed, missed, and duplicated Workers Cron Triggers». Инцидент с точно таким же названием был 23 октября — тогда он длился 5 ч 10 мин.
В тот же день отмечены задержки сборок Workers и проблемы с производительностью сети в Чикаго. Причины и масштаб не раскрыты, постмортема пока нет.
Почему это важно
Cron Triggers часто используют для биллинга, рассылок, синхронизаций и очистки данных. Пропуск запуска означает несделанную работу, а дубль — двойное списание или двойное письмо, если задача не защищена.
Что делать
- Идемпотентность. Каждая задача должна безопасно переживать повторный запуск: ключи идемпотентности, проверка «уже обработано» в хранилище, upsert вместо insert.
- Догоняющая логика. Обрабатывать не «то, что за последние 5 минут», а «всё, что ещё не обработано» — тогда пропущенный запуск компенсируется следующим.
- Мониторинг. Heartbeat-проверка (dead man’s switch), которая поднимет тревогу, если задача не отработала вовремя.
- Для критичных задач — рассмотреть очередь с гарантией доставки вместо чистого cron.
According to Cloudflare’s status page, an incident titled “Delayed, missed, and duplicated Workers Cron Triggers” ran from 21:48 UTC on Oct 26 to 01:15 UTC on Oct 27 (3h26m). An incident with exactly the same title occurred on Oct 23, lasting 5h10m.
The same day also saw Workers build delays and network performance issues in Chicago. No cause or scope has been disclosed and there is no postmortem yet.
Why it matters
Cron Triggers are often used for billing, notifications, syncs and data cleanup. A missed run means undone work; a duplicate means a double charge or double email if the job is not protected.
What to do
- Idempotency. Every job should survive a repeat run safely: idempotency keys, “already processed” checks in storage, upsert instead of insert.
- Catch-up logic. Process “everything not yet handled” rather than “the last 5 minutes”, so a missed run is covered by the next one.
- Monitoring. A heartbeat check (dead man’s switch) that alerts if a job did not run on time.
- For critical jobs, consider a queue with delivery guarantees instead of plain cron.