M · Verwiesen
Teilt dem Client mit, dass dieser Knoten nicht der Leader ist, und verweist stattdessen auf den Leader (nur Cluster). Der Body ist die Client-Adresse des Leaders (host:port) als Text — die Adresse, mit der sich der Client selbst verbindet, nicht der Raft-Port.
Offizielle Clients merken sich die Adresse nur dann als Leader-Hinweis, wenn sie exakt einer bereits registrierten Allowlist-Adresse entspricht, und schließen danach diese Session. Ein Acquire, von dem auch nur ein Byte gesendet wurde, wird keinem M willkürlich zugeordnet und nicht erneut gesendet; er endet als Indeterminate. Spätere unabhängige Requests und noch nicht vom Writer gehaltene, ungesendete Requests nutzen die neue Leader-Verbindung. Wurde noch kein Leader gewählt und gibt es keine Adresse, auf die verwiesen werden kann, wird stattdessen ein E no_leader gesendet.
Das vollständige Cluster-Verhalten findest du unter Protokoll (Cluster).
Byte-Notation:
opist ein ASCII-Zeichen, undaddrist UTF-8-Text (variable Länge, in der Struktur alsNdargestellt). Das abschließende\nist0A.
Ablauf
M enthält weder owner noch key, und eine Session kann mehrere Acquires mischen. Beim Wechsel von Leader zu Follower können gerade commitete und vom Follower abgelehnte Requests nebeneinander bestehen; ein einzelnes M beweist daher nicht, dass ein bestimmter Pending-Request nicht erworben wurde. Diese konservative Regel verhindert doppelte Acquires und eine same-owner Lease-Verlängerung.