A · Acquire
Request untuk memperoleh lock. lease adalah pengaman agar server mengambil kembali key setelah kedaluwarsa jika klien mati tanpa release. wait membatasi waktu tunggu dalam detik; 0 melakukan satu percobaan langsung tanpa masuk antrean. Tidak ada tunggu tanpa batas. Sukses menghasilkan Diperoleh A, waktu habis Timeout T, dan kapasitas antrean/server penuh Sibuk B.
owner — ID korelasi respons
owner adalah ID respons untuk satu percobaan acquire. Klien membuat nilai baru per panggilan dan server meng-echo nilai yang sama dalam A, T, dan B agar respons pipeline dapat dicocokkan.
owner bukan otoritas lock atau fencing token. Mengirim ulang key dan owner yang sama tidak mengembalikan active token atau memperbarui lease. Jika satu byte request saja mungkin telah dikirim tanpa respons terkonfirmasi, klien tidak boleh otomatis mengirim ulang acquire dengan owner yang sama; hasilnya Indeterminate. Critical section tidak boleh dimasuki, dan grant yang tidak teramati diambil kembali paling lambat saat lease expiry.
Klien resmi membuat satu deadline monotonic untuk seluruh operasi dari wait caller yang telah dinormalisasi, lalu mempertahankan deadline dan owner itu pada retry yang pasti belum terkirim. Tepat sebelum mengirim, writer membulatkan waktu tersisa ke atas dan menghitung ulang wire wait, sehingga koneksi yang terlambat tidak memulai wait 255 detik baru di server. Request queued yang melewati deadline keseluruhan tidak dikirim; jika mungkin sudah terkirim, session tepatnya ditutup dan hasilnya Indeterminate. Jika A yang telah berkorelasi sebelum deadline baru ditemukan terlambat di gate penyerahan Ticket, session tidak perlu ditutup, tetapi release kompensasi exact token dijadwalkan dan Indeterminate dikembalikan. T dan B yang berkorelasi masing-masing tetap merupakan timeout dan busy yang definitif.
wait=0 asli tetap merupakan percobaan langsung di wire. Selama transport deadline lima detik yang terpisah, klien boleh memilih koneksi lain dan retry dengan owner yang sama hanya ketika request pasti belum terkirim; percobaan server-side yang sebenarnya tetap tepat satu kali. Setelah mungkin terkirim, request tidak pernah dikirim ulang.
Notasi byte:
opberupa karakter ASCII,wait/leasebersifat biner (u8, big-endian),ownerbersifat biner (u64, big-endian), dankeyberupa teks UTF-8 (panjang variabel, ditampilkan sebagaiNdi struktur).\ndi akhir adalah0A. Header tetap adalah nilai biner yang bisa mengandung0x0A, jadi konsumsi berdasarkan jumlah byte lebih dulu sebelum mencari newline.
Alur
Lihat Matriks Request × Status Key untuk aturan lengkap perilaku per status key.