Таймауты блокировки Redis

Discourse использует DistributedMutex — реализацию блокировки Redis для различных задач. Похоже, что в этой реализации блокировки Redis предусмотрены таймауты, что превращает её в «аренду» (lease), а не в классическую блокировку.

Возможны проблемы, такие как состояния гонки, когда время действия блокировки Redis истекает, но работа, защищённая этой блокировкой, ещё не завершена.

Это верно, но мы стараемся проектировать решения так, чтобы они занимали значительно меньше времени, чем тайм-аут блокировки.

Если бы у нас не было никакого тайм-аута, мы могли бы оказаться в ситуации, когда мьютекс заблокирован навсегда (например, если процесс приложения теряет соединение с Redis, удерживая блокировку).