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

M · Movido

Estruturarefresh

Informa ao cliente que este nó não é o líder, então vá até o líder em vez disso (somente cluster). O corpo é o endereço de cliente do líder (host:port) como texto — o endereço ao qual o próprio cliente se conecta, não a porta Raft.

Os clientes oficiais só guardam o endereço como dica do líder quando ele coincide exatamente com um endereço já cadastrado na allowlist, e então fecham essa session. Um acquire do qual até um único byte pode ter sido enviado não é associado arbitrariamente ao M nem reenviado; termina como Indeterminate. Requisições independentes posteriores e requisições ainda não enviadas que o writer ainda não possui usam a nova conexão ao líder. Se nenhum líder ainda foi eleito e não há endereço para indicar, um E no_leader é enviado no lugar.

Veja Protocolo (Cluster) para o comportamento completo do cluster.

Notação de bytes: op é um caractere ASCII, e addr é texto UTF-8 (comprimento variável, mostrado como N na estrutura). O \n final é 0A.

Fluxo

Cliente
Seguidor
Líder
A · aquisição (key)
M · movido (endereço do líder)
fecha a session antiga · acquire enviado = Indeterminate
próximo acquire independente começa no líder
requisiçãoresposta

M não contém owner nem key, e uma session pode misturar vários acquires. Na transição líder→seguidor, requisições em commit podem coexistir com as recusadas pelo seguidor; portanto um M não prova que um pending específico não adquiriu o lock. Essa regra conservadora evita acquires duplicados e extensão do lease com o mesmo owner.