A · Adquirir
Solicitud de adquisición del bloqueo. lease es la red de seguridad con la que el servidor recupera la key al vencer si el cliente muere sin release. wait limita la espera en segundos; 0 hace un único intento inmediato sin entrar en la cola. No hay espera infinita. El éxito devuelve Adquirido A, el fin de la espera Timeout T, y la capacidad llena de cola/servidor Ocupado B.
owner — Identificador de correlación de respuesta
owner es el identificador de respuesta de un intento de adquisición. El cliente crea uno nuevo por llamada y el servidor lo repite en A, T y B para correlacionar respuestas con pipeline.
owner no es autoridad del bloqueo ni fencing token. Reenviar la misma key y owner no devuelve el active token ni renueva el lease. Si pudo enviarse siquiera un byte sin respuesta confirmada, el cliente no debe reenviar automáticamente ese acquire con el mismo owner: el resultado es Indeterminate. No puede entrar en la sección crítica; un grant no observado se recupera como máximo al expirar el lease.
Los clientes oficiales crean una única deadline monotonic para toda la operación a partir del wait normalizado del caller, y conservan esa deadline y el owner en los reintentos definitivamente no enviados. Justo antes del envío, el writer redondea hacia arriba el tiempo restante y recalcula el wait wire, por lo que una conexión tardía no inicia otra espera de 255 segundos en el server. Una solicitud queued que supera la deadline total no se envía; si pudo haberse enviado, se cierra su session exacta y termina como Indeterminate. Si un A ya correlacionado justo antes de la deadline se descubre tarde en el gate de entrega del Ticket, no hace falta cerrar la session, pero se programa un release compensatorio del exact token y se devuelve Indeterminate. Los T y B correlacionados siguen siendo respectivamente timeout y busy definitivos.
Un wait=0 original sigue siendo un intento inmediato en wire. Durante su transport deadline separada de cinco segundos, el cliente puede elegir otra conexión y reintentar con el mismo owner solo mientras la solicitud esté definitivamente no enviada; el intento server-side real sigue siendo exactamente uno. Nunca reenvía tras un posible envío.
Notación de bytes:
opes un carácter ASCII,wait/leaseson binarios (u8, big-endian),owneres binario (u64, big-endian), ykeyes texto UTF-8 (longitud variable, mostrado comoNen la estructura). El\nfinal es0A. La cabecera fija es un valor binario y puede contener0x0A, así que hay que consumirla primero según su número de bytes antes de buscar el salto de línea.
Flujo
Consulta Matriz de solicitud × estado de clave para las reglas completas de comportamiento según el estado de la clave.