Redis Lock 타임아웃

Discourse는 다양한 용도로 Redis 락의 구현체인 DistributedMutex를 사용합니다. 이 Redis 락 구현에는 타임아웃이 있어, 엄밀한 의미의 "락(lock)"이 아닌 "리스(lease)"에 가깝습니다.

Redis 락이 타임아웃되는 동안 락에 의해 보호되는 작업이 아직 완료되지 않은 경우, 레이스 컨디션과 같은 문제가 발생할 수 있습니다.

맞습니다. 하지만 우리는 락의 타임아웃보다 훨씬 짧은 시간에 작업을 완료하도록 설계를 시도합니다.

타임아웃이 전혀 없다면, 뮤텍스가 영원히 잠긴 상태가 될 수 있습니다. (예: 락을 보유하고 있는 상태에서 애플리케이션 프로세스가 Redis와의 연결을 잃는 경우)