Actuellement en test : le code GitHub sera ouvert une fois terminé.

N · Introuvable

Structurerefresh

Renvoyé quand la clé n'existait pas au moment d'une requête de libération (R) — ou quand elle existe mais que le token ne correspond pas à celui actuellement détenu. Ce n'est pas une erreur — elle est renvoyée comme une valeur « n'existait pas ».

Notation des octets : op est un caractère ASCII, token est binaire (u64, big-endian), et key est du texte UTF-8 (longueur variable, notée N dans la structure). Le \n final est 0A. L'en-tête fixe est une valeur binaire et peut contenir 0x0A : il faut donc le consommer d'abord selon son nombre d'octets, avant de chercher le retour à la ligne.

token est le corrélateur : la valeur envoyée dans la requête, renvoyée telle quelle. C'est par elle que le client identifie de quelle requête ceci est la réponse (Règles de correspondance des réponses).

Flux

Client
Serveur
R · libération (key · token)
clé inexistante, ou jeton non concordant
N · introuvable
requêteréponse

La libération est proche de l'idempotence — envoyer R pour une clé déjà récupérée par le serveur via l'expiration du lease, ou déjà libérée, vous renvoie N. Il en va de même lorsque la clé a entre-temps été réoctroyée à un autre détenteur : le jeton ne correspond pas et son verrou reste intact. Comme c'est une branche normale du flux, les clients n'ont pas besoin de la traiter comme une erreur.