Обновить

Почему я перестал удалять пользователей сразу

Раньше логика удаления у меня была максимально простой:

DELETE FROM users
WHERE subscription_end < NOW();

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

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

Теперь сначала пользователь получает статус pending_deletion, а отдельная задача спустя заданный интервал еще раз проверяет его состояние. Если за это время подписка продлилась, платеж обработался или статус изменился, удаление просто отменяется. По сути это обычная перепроверка перед необратимой операцией. С тех пор я стараюсь применять этот принцип не только к удалению пользователей. Если действие нельзя легко отменить, одной проверки условия перед выполнением уже недостаточно.

Поделитесь, кто как делает? используете отложенное удаление, soft delete или сразу выполняете операцию, если условие выполнено?

Теги:
+2
Комментарии3
ЕЖЕДНЕВНЫЙ ХАБР | 6 АВГ 2026
Охват35K

Как я воевал с Яндексом и решил проблему «мертвых душ» на диске

Статья посвящается недавнему сомнительному решению Яндекса уменьшить объём своего диска и жестоко покарать всех, кто посмел: впихнуть невпихуемое, не удалить старые файлы или просто не суметь разобраться в их «гениальном» интерфейсе и удалить снимки, которые не подчиняются абстракции файлов вообще. Ваш покорный слуга создаёт расширение, которое позволяет решить проблему. На превью то, кем он себя видит: грозным защитником угнетённых бабуль из бухгалтерии, в клетчатой рубашке инженера и с волшебным мечом.

Как я воевал с Яндексом и решил проблему «мертвых душ» на диске

Публикации