Инженерный разбор: как chunk() потерял половину рассылки на сотнях тысяч чатов
Оригинал: chunk() пропустил половину рассылки
Конспект редакции
Автор разбирает баг, из-за которого фоновые команды, обходящие таблицу с сотнями тысяч чатов, отправляли сообщения лишь части аудитории.
Хабр публикует разбор инцидента с функцией chunk(): четыре фоновые команды раз в минуту обходят таблицу на сотни тысяч чатов, определяя, кому бот напишет первым — по обновлению суточных лимитов, началу разговора или окончанию подписки. Год назад выяснилось, что за один проход каждая команда обрабатывает ровно половину тех, кого сама же выбрала.
Проблема иллюстрирует классический класс багов, связанных с пагинацией и конкурентным доступом к данным. Такие ошибки редко проявляются сразу и обычно обнаруживаются только по косвенным метрикам — например, по недополученным рассылкам.
Для команд, работающих с массовыми уведомлениями и персонализацией, кейс полезен как чек-лист при аудите собственных пайплайнов. Полный разбор — на сайте Хабра.
Материал агрегирован; полный текст — на сайте Хабр — ИТ-новости.
Почему это важно
Кейс наглядно показывает, как ошибка в батчинге на масштабе превращается в потерю половины доставки — критично для команд, строящих массовые сервисы.
Контекст
Публикация вышла в русскоязычном IT-сообществе на Хабре в формате технического разбора инцидента.
Влияние на индустрию
Для продуктовых и инфраструктурных команд — напоминание о необходимости нагрузочного тестирования и наблюдаемости при работе с большими таблицами и фоновыми воркерами.
Что дальше
Фото (11)
Увеличить1 / 11Упоминается
Комментарий редактора Игоря
Классический пример того, что «работает на тесте» и «работает на проде» — это два разных мира, и такие разборы стоят дороже любой документации.

