← На главную

Гонка процессов при замене карты сломала стриминг

07.05.2026 14:15 · hackernews

Авторы статьи рассказали историю из жизни, иллюстрирующую, насколько сложно строить надежные распределенные системы. Однажды вечером автор и семья посмотрели сериал на любимом стриминговом сервисе, но во время просмотра подписка внезапно была отключена, и экран требовал начать новый пробный период. Проблема была связана с обновлением банковской карты: старая карточка истекла, и автор заменил её в системе банка, но подписка исчезла. Попробовав стандартные приемы вроде перезагрузки, ситуацию исправить не удалось. Автор пытался связаться с поддержкой банка и провайдера, но обе стороны твердили, что ошибок нет, а операции выполняются корректно. В итоге возникла странная ситуация: система сначала активировала привилегию кредитной карты, а через пять минут сама же без ошибок отменяла её.

Расследование показало, что дело было в различии синхронных и асинхронных процессов. Подключение новой карты происходит синхронно — пользователь сразу получает доступ, а уведомление о обновлении в базе данных идет на второй план. Отключение старой карты работает иначе: операция асинхронная, она не ждет подтверждения мгновенно. Когда автор переключал привилегию в личном кабинете банка, система асинхронно отправляла уведомление о разорвании связи провайдеру. Через несколько минут этот фоновый процесс завершился, и сервис корректно отменил подписку, даже несмотря на то, что пользователь уже подключил новую карту. Если не ждать завершения фоновой задачи, система может обработать отключение после активации. Это привело к ошибке, которую можно назвать гонкой данных между синхронной активацией и асинхронным отключением.

Возможно, система изначально отключилась, потому что на банковской карте, привязанной к аккаунту, истек срок действия. Приложение на телевизоре заметило некорректную карту и вывело пользователя из системы, чтобы обновить данные через другой вход. При вводе новой карты могла активироваться процедура списания средств, а не применение подарочного преимущества от банка. Факт, что старая карта и карта с привилегией были разными, усугубил ситуацию. Автор пришел к выводу, что реальные системы — это хрупкие конструкции, где тайминги процессов могут вести к неожиданным результатам. Когда все работает идеально, мы не замечаем сложности архитектуры, но сбои напоминают о том, сколько усилий вкладывают инженеры, чтобы сделать технологии ненадежными для нас лишь в редких случаях.

Читать оригинал →