Страх

Є у мене один давній страх: що код який безспосередньо взаємодіє з користувачем, наприклад відправлення повідомлення через бот, зациклиться і почне надсилати тисячі однакових повідомлень.

Тому у всіх таких місцях я обкладаюсь транзакціями, локами, роблю так щоб результат виконання операції зберігався та гаратовано виконувався не більше 1 разу і так далі.

Вчора писав код який відправляє щодня подяки користувачам @Donate1024Bot:

def perform
  Lock.find_by(key: "gratitude").with_lock do
    next if Gratitude.where(is_sent: true).exists?(["date(updated_at) = date(?)", DateTime.now.utc])

    Gratitude.where(is_sent: false).first&.send_to_users
  end
end

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

Характерно, що халепа досі не траплялась.

Експерти по психоаналізу можуть розібрати цю фобію у коментах👇

Експерти по паралельному програмуванню можуть знайти помилку в коді🧐


Сподобалось? Долучайтеся до мого телеграм каналу: https://t.me/full_of_hatred