> ## Content Index
> Fetch the complete content index at: https://www.rozhkov.me/llms.txt
> Use this file to discover other available public pages before exploring further.

# Страх
- URL: https://www.rozhkov.me/double-spend-fear/
- Published: 2022-09-14T06:15:00.000Z
- Updated: 2022-09-14T06:15:00.000Z
- Author: Vova Rozhkov
- Tags: робота, кулсторі

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

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

Вчора писав код який відправляє щодня подяки користувачам [@Donate1024Bot](https://t.me/Donate1024Bot):

```ruby
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
```

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

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

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

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