Derzeit im Test: Der GitHub-Code wird nach Abschluss veröffentlicht.

Fencing-Token

  • Das token in einer Acquire-Antwort A ist ein monoton steigendes u64. Egal welcher Schlüssel oder der wievielte Erwerb es ist, der Wert ist immer größer als jedes zuvor ausgestellte Token.
  • Im Single-Modus garantiert der globale Zähler des Servers die Monotonie; im Cluster-Modus ist es die per Konsens replizierte Ausstellungsnummer — das Token wird deterministisch in dem Moment vergeben, in dem ein committeter Befehl angewendet wird, sodass jeder Knoten denselben Wert berechnet, und es steigt auch über einen Leaderwechsel hinweg weiter.
  • Setzt die geschützte Ressource die Regel "jedes Token ablehnen, das niedriger ist als das zuletzt gesehene" durch, kann sie den Zugriff eines alten Inhabers blockieren, der nach lease-Ablauf verspätet aufwacht (mit einem niedrigeren Token) — die letzte Verteidigungslinie gegen clientseitige Verzögerungen (wie eine GC-Pause), die der Lock-Server nicht kontrollieren kann.

Das Szenario, das diese Validierung notwendig macht, findest du unter Funktionsweise.