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

T · Zeitüberschreitung

Strukturrefresh

Wird gesendet, wenn eine Acquire-Anforderung (A) die Sperre nicht innerhalb von wait erhalten konnte — der Server hat aufgegeben, ohne sie zu vergeben (dies ist kein Fehler).

Byte-Notation: op ist ein ASCII-Zeichen, owner ist binär (u64, big-endian), und key ist UTF-8-Text (variable Länge, in der Struktur als N dargestellt). Das abschließende \n ist 0A. Der feste Header ist ein Binärwert und kann 0x0A enthalten — er muss daher zuerst anhand der Bytezahl verbraucht werden, bevor nach dem Zeilenumbruch gesucht wird.

owner ist der Wert aus der Anfrage, unverändert zurückgespiegelt — der Client bestimmt darüber, zu welcher Anfrage diese Antwort gehört (Regeln zur Antwortzuordnung).

Ablauf

Client
Server
A · acquire (key · wait · lease · owner)
gehalten → eingereiht
kommt nicht innerhalb von wait Sekunden an die Reihe
T · Zeitüberschreitung
aus der Warteschlange entfernt — zum erneuten Versuch neues A senden
AnfrageAntwort

In dem Moment, in dem T eintrifft, wurde diese Anforderung bereits aus der Warteschlange entfernt, sodass ihr die Sperre später niemals mehr vergeben werden kann. Da auch kein Token ausgestellt wurde, gibt es nichts aufzuräumen — einfach erneut versuchen.