M · Movido
Indica al cliente que este nodo no es el líder, así que debe ir al líder en su lugar (solo en clúster). El cuerpo es la dirección de cliente del líder (host:port) como texto — la dirección a la que el propio cliente se conecta, no el puerto Raft.
Los clientes oficiales solo recuerdan la dirección como pista del líder si coincide exactamente con una dirección ya registrada en su allowlist, y después cierran esa session. Un acquire del que pudo enviarse un solo byte no se asocia arbitrariamente con M ni se reenvía; termina como Indeterminate. Las solicitudes independientes posteriores y las aún no enviadas que el writer todavía no posee usan la nueva conexión al líder. Si aún no se ha elegido un líder y no hay ninguna dirección que indicar, se envía en su lugar un E no_leader.
Consulta Protocolo (clúster) para el comportamiento completo del clúster.
Notación de bytes:
opes un carácter ASCII, yaddres texto UTF-8 (longitud variable, mostrado comoNen la estructura). El\nfinal es0A.
Flujo
M no contiene owner ni key y una session puede mezclar varios acquires. Durante una transición líder→seguidor pueden coexistir solicitudes en commit con otras rechazadas por el seguidor; por eso un M no demuestra que un pending concreto no adquirió el lock. Esta regla conservadora evita acquires duplicados y la extensión del lease con el mismo owner.