Matriz de solicitud × estado de clave
A (Adquirir)
| Estado de la clave | Acción del servidor | Respuesta | Momento |
|---|---|---|---|
| No registrada | Registrar (expiración = ahora+lease), emitir token | A+token+owner+key | Inmediatamente |
| Registrada + expirada | Renovar (ahora+lease), nuevo token | A+token+owner+key | Inmediatamente |
Registrada + holder válido + wait=0 | No encolar | T+owner+key | Inmediato |
Registrada + holder válido + wait>0 | Encolar, respuesta pendiente | A o T+owner+key | Al adquirir por release/expiry, o T al vencer wait |
| Cola o capacidad del servidor al límite | No encolar | B+owner+key | Inmediato |
- La ruta de liberación es justa por FIFO: cuando el poseedor hace
R, se entrega directamente al esperador que está al frente de la cola (sin volver a competir, con un nuevo token). - Solo la ruta de expiración no es FIFO.
- Un
ownerigual al holder actual no recibe trato especial. No autoriza devolver un active token ni renovar el lease; se aplican las reglas normales de una key retenida. - Las respuestas pueden llegar fuera de orden; el cliente las empareja por el
ownerrepetido.R(Liberar)
| Estado de la clave | Acción del servidor | Respuesta |
|---|---|---|
| Registrada + token coincide, con esperadores | Entregar directamente al esperador que está al frente (nuevo token) | R+token+key |
| Registrada + token coincide, sin esperadores | Eliminar la clave | R+token+key |
| Registrada + token no coincide | Nada (el bloqueo se mantiene) | N+token+key |
| No registrada | Nada | N+token+key |
Cuándo se procesa la expiración
- El modo único procesa la expiración de forma perezosa (lazy) — una clave que ya expiró es reutilizada en el sitio por la siguiente adquisición (la segunda fila de arriba), y una limpieza separada cada 5 segundos elimina las claves expiradas sin esperadores. Por eso, liberar una clave que ya expiró pero aún no se ha limpiado puede devolver
Ren lugar deN. - En modo cluster, el líder espera la siguiente entrada de un deadline min-heap que valida token y hace commit por consenso del comando
Expireantes de eliminar la key. Así las diferencias de clock no dividen el estado del bloqueo.