RU

Двойная бронь: как мы поймали гонку в записи и закрыли её EXCLUDE-констрейнтом

Я делаю сервис онлайн-записи для салонов красоты: клиент записывается в чат-боте или на странице, а запись падает в расписание мастера. Однажды маст…

PostgreSQLrace conditionдвойная броньEXCLUDE constraintbtree_gistadvisory lockSAVEPOINTtstzrangeцелостность данныхконкурентность
Habr
RU

Я продал одно место на концерт 20 раз. Разбираемся, как правильно защититься от race condition в Spring Boot

Однажды я решил проверить на практике байку, которую слышал на десятке собеседований: “у нас на проде было такое-то место продано дважды, потому что…

javahibernatespring data jparedisoptimistic lockingpessimistic lockingrace conditionspring boot
Habr
RU

Реализация Statefull команд в Telegram API

Java Telegram API обманывает разработчиков дубликатами запросов при отключении интернета? Мы команда разработки телеграмм ботов, которая смогла…

telegram apitelegram api manualtelegram api requeststatelessstatefullrace conditionидемпотентностьидемпотентность запросов
Habr
RU

Кэширование в Symfony: как мы сломали авторизацию и починили ее через Lock

Привет, Хабр! На связи команда «Исходного Кода». Когда бэкенд на Symfony начинает тормозить, одним из первых инструментов оптимизации почти всегда с…

Symfony LockSymfony CacheJWT кэшированиеrace conditiondistributed lockMemcached401 Unauthorizeddouble-check
Habr
RU

Idempotency keys: 5 граблей, которые мы поймали на проде

Пятница, 23:47. PagerDuty: “Платёж AmEx, провайдер вернул 5xx три раза подряд, билеты не зарезервированы.” Открываю логи – действительно три ответа…

идемпотентностьidempotencyплатежираспределённые системы.NETC#APIintent-keyrace conditionграбли
Habr