R · Liberação
Uma requisição de liberação de lock. token é o token de fencing recebido naquela aquisição, e a liberação só acontece se ele conferir com o token atualmente detido. A resposta é Liberado R ou Não Encontrado N.
token — o mecanismo que impede liberar o lock alheio
Sem a verificação do token surge uma sequência perigosa. Enquanto uma requisição de liberação é retentada através de um failover, o lock original pode ser recuperado pela expiração do lease e concedido novamente a outro cliente — e então a liberação atrasada acabaria soltando o lock desse novo detentor. Liberar apenas quando o token confere bloqueia esse caminho.
Se o token for diferente, chega N (não encontrado) e o lock permanece intacto. As novas tentativas de liberação devem sempre ser enviadas com o mesmo token, e a correspondência de resposta também usa o token ecoado (Regras de Correspondência de Resposta).
Notação de bytes:
opé um caractere ASCII,tokené binário (u64, big-endian), ekeyé texto UTF-8 (comprimento variável, mostrado comoNna estrutura). O\nfinal é0A. O cabeçalho fixo é um valor binário e pode conter0x0A, então precisa ser consumido primeiro pela contagem de bytes, antes de procurar a nova linha.
Fluxo
Se houver alguém esperando pela chave liberada, ela é repassada diretamente para o início da fila, sem nova disputa — separadamente do R (liberado) enviado a quem liberou, quem esperava recebe um A (concedido) com um novo token.