Когда 5 запросов одновременно ловят 401 — начинается маленький IT-хоррор
В PDP Mobile и WikiMind поймали race condition: истёк JWT, 5 параллельных запросов одновременно решили обновить токен. Починили это через Async Mutex, чтобы refresh шёл по одному, без дублей.

В PDP Mobile и WikiMind мы поймали классическую race condition: истёк JWT, прилетело 5 параллельных запросов, и каждый решил, что именно он должен обновить токен. Итог — лишняя нагрузка, дубли refresh-запросов и поведение уровня “кто первый встал, того и access”.
Починили это через Async Mutex: первый запрос берёт “ключ” и делает refresh, остальные спокойно ждут результат. Как только токен обновлён — все продолжают работу уже с новым JWT, без хаоса и дублей.
Этот паттерн мы внедрили и в мобильном приложении, и в веб-платформе. В эпоху, когда у всех по 100 async-операций в секунду, такие штуки — уже не “nice to have”, а база продакшена.
Короче, mutex — как коллега, который говорит: “Так, обновляем токен по одному, без суеты” 😄