Atualmente em testes: o código do GitHub será aberto quando concluído.

T · Tempo Esgotado

Estruturarefresh

Enviado quando uma requisição de aquisição (A) não conseguiu obter o lock dentro de wait — o servidor desistiu sem concedê-lo (isso não é um erro).

Notação de bytes: op é um caractere ASCII, owner é binário (u64, big-endian), e key é texto UTF-8 (comprimento variável, mostrado como N na estrutura). O \n final é 0A. O cabeçalho fixo é um valor binário e pode conter 0x0A, então precisa ser consumido primeiro pela contagem de bytes, antes de procurar a nova linha.

owner é o correlacionador: o valor enviado na requisição, devolvido sem alteração. É por ele que o cliente identifica de qual requisição esta é a resposta (Regras de Correspondência de Resposta).

Fluxo

Cliente
Servidor
A · aquisição (key · wait · lease · owner)
ocupada → enfileirado
a vez não chega dentro de wait segundos
T · tempo esgotado
removido da fila — envie um novo A para tentar de novo
requisiçãoresposta

No momento em que T chega, essa requisição já foi removida da fila, então o lock nunca poderá ser concedido a ela posteriormente. Como nenhum token foi emitido, não há nada para limpar — basta tentar novamente.