Tiempos de espera de Redis Lock

Discourse utiliza DistributedMutex, una implementación de bloqueo de Redis para diversas funciones. Parece que esta implementación de bloqueo de Redis tiene tiempos de espera, lo que la convierte en un “arrendamiento” en lugar de un “bloqueo”.

Podrían surgir problemas potenciales como condiciones de carrera cuando el tiempo de espera del bloqueo de Redis se agota, pero el trabajo protegido por dicho bloqueo aún no ha finalizado.

Es cierto, pero intentamos diseñar las cosas para que requieran significativamente menos tiempo que el tiempo de espera del bloqueo.

Si no tuviéramos algún tipo de tiempo de espera, podríamos terminar en una situación donde el mutex quede bloqueado para siempre (por ejemplo, si un proceso de la aplicación pierde la conexión con Redis mientras mantiene el bloqueo).