Discourse utilise DistributedMutex, une implémentation de verrou Redis pour diverses tâches. Il semble que cette implémentation de verrou Redis intègre des délais d’attente, ce qui en fait une « location » plutôt qu’un « verrou ».
Des problèmes potentiels pourraient survenir, tels que des conditions de course lorsque le délai d’attente du verrou Redis expire alors que le travail protégé par ce verrou n’est pas encore terminé.
C’est vrai, mais nous concevons les choses de manière à ce qu’elles prennent nettement moins de temps que le délai d’expiration du verrou.
Si nous n’avions aucun type de délai d’expiration, nous pourrions nous retrouver dans une situation où le mutex est verrouillé indéfiniment (par exemple, si un processus d’application perd la connexion à Redis tout en détenant le verrou).