Saat ini dalam pengujian: kode GitHub akan dibuka setelah selesai.

R · Release ​

Strukturrefresh

Request untuk release lock. token adalah fencing token yang diterima saat acquire, dan lock hanya dirilis jika token itu cocok dengan token yang sedang dipegang. Responsnya adalah Released R atau Not Found N.

token — pengaman agar tidak merilis lock milik orang lain ​

Tanpa verifikasi token ada urutan yang berbahaya. Saat sebuah request release dicoba ulang melewati failover, lock aslinya bisa direbut kembali karena lease habis lalu diberikan ulang ke klien lain — release yang tiba terlambat kemudian akan melepas lock milik pemegang baru itu. Karena release hanya terjadi saat token cocok, jalur ini tertutup.

Jika token berbeda, N (not found) yang datang dan lock tetap dipegang. Percobaan ulang release harus selalu membawa token yang sama, dan pencocokan responsnya pun memakai token yang dipantulkan (Aturan pencocokan respons).

Notasi byte: op berupa karakter ASCII, token bersifat biner (u64, big-endian), dan key berupa teks UTF-8 (panjang variabel, ditampilkan sebagai N di struktur). \n di akhir adalah 0A. Header tetap adalah nilai biner yang bisa mengandung 0x0A, jadi konsumsi berdasarkan jumlah byte lebih dulu sebelum mencari newline.

Alur ​

Pemegang X
Server
Penunggu Y
R · release (key · token)
R · released
jika ada penunggu → A · handoff langsung (token baru)
jika key tidak ada atau token berbeda
N · not found
permintaanrespons

Jika ada penunggu untuk key yang dirilis, key tersebut diserahkan langsung ke depan antrean tanpa perebutan ulang — terpisah dari R (released) yang dikirim ke perilis, penunggu mendapat A (acquired) yang membawa token baru.