Redisロックのタイムアウト

Discourse は、さまざまな用途に対して Redis ロックの実装である DistributedMutex を使用しています。この Redis ロックの実装にはタイムアウトが設定されているため、厳密な「ロック」ではなく「リース」として機能しているようです。

Redis ロックのタイムアウトが発生した時点で、そのロックによって保護された処理がまだ完了していない場合、競合状態などの問題が生じる可能性があります。

その通りですが、ロックのタイムアウト時間よりも大幅に短い時間で処理が完了するように設計しています。

もし何らかのタイムアウト机制がなければ、ミューテックスが永久にロックされたままになる可能性があります(例えば、ロックを保持しているアプリケーションプロセスがRedisとの接続を失った場合など)。