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

Regras de Correspondência de Resposta (Implementação do Cliente) ​

Como as respostas podem chegar fora de ordem em relação às requisições (a resposta de uma aquisição que esperou chega quando sua vez chega), o cliente deve parear as respostas com as requisições usando as seguintes regras — um esquema de demultiplexação que separa as respostas intercaladas em uma conexão de volta para suas requisições.

RegraDetalhe
Chave de correspondênciaRejeição definitiva por capacidade de fila/servidor; retornar Busy imediatamente, sem retry interno
Múltiplas requisições com o mesmo (op, key)Não presuma FIFO — identifique sempre pelo identificador. Veja a explicação abaixo
Momento de registroQuem espera é registrado antes de a requisição ser enviada (para evitar uma corrida em que a resposta chega primeiro)
Tratamento de N/TRetornados como valores que não são erro ("não existia" / "tempo esgotado")
Tratamento de BFila cheia — não falhe de imediato; tente novamente com backoff dentro do orçamento de wait
Tratamento de MGuardar só endereço allowlisted como leader hint e fechar; sem owner/key não há correlação com pending enviados
Tratamento de LAtualizar só leader hint e manter conexão; aviso do servidor, não resposta
E no_leader / E not_active / E auth_failedFechar e aplicar backoff por erro; no_leader também invalida o hint
Outro E / resposta desconhecidaNão correlacionável, portanto connection-fatal; acquires enviados ficam Indeterminate
Resposta sem quem espere correspondenteIncompatibilidade protocol/session: fechar. Para A, passar exact token conhecido à reserved release lane

Por que correlacionar pelo identificador, e não por FIFO ​

Mesmo para uma key, sucesso imediato, espera na fila e rejeição B terminam em momentos diferentes. Várias keys também usam pipeline numa conexão. Nunca associe por FIFO; verifique identifier ecoado, op e key juntos.

Requisições abortadas e locks órfãos ​

Se uma requisição cancelada já recebeu grant no servidor, o lock pode permanecer. Após enviar um byte sem resposta definitiva, o resultado é Indeterminate. Não reenvie A com o mesmo owner como consulta de estado. Só se o token já foi parseado, envie best-effort exact-token R; grant desconhecido é recuperado por lease expiry.

Por isso a conexão fecha após cancelamento pós-envio ou erro de framing. Descartar só pending pode deixar resposta órfã. Socket close não prova release de grant committed: exact-token R se conhecido; senão, Indeterminate até lease expiry.