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

M · Moved

Strukturrefresh

Memberi tahu klien bahwa node ini bukan leader, jadi arahkan ke leader (khusus cluster). Body-nya adalah alamat klien milik leader (host:port) sebagai teks — alamat yang langsung dipakai klien untuk konek, bukan port Raft.

Klien resmi hanya mengingat alamat sebagai hint leader jika persis cocok dengan alamat yang sudah terdaftar dalam allowlist, lalu menutup session itu. Acquire yang mungkin sudah mengirim satu byte pun tidak dicocokkan sembarang dengan M dan tidak dikirim ulang; hasilnya Indeterminate. Request independen berikutnya dan request belum terkirim yang belum dipegang writer memakai koneksi leader baru. Jika leader belum terpilih dan tidak ada alamat untuk ditunjuk, E no_leader dikirim sebagai gantinya.

Lihat Protokol (Cluster) untuk perilaku cluster lengkap.

Notasi byte: op berupa karakter ASCII, dan addr berupa teks UTF-8 (panjang variabel, ditampilkan sebagai N di struktur). \n di akhir adalah 0A.

Alur

Klien
Follower
Leader
A · acquire (key)
M · moved (alamat leader)
tutup session lama · acquire terkirim = Indeterminate
acquire independen berikutnya dimulai di leader
permintaanrespons

M tidak memuat owner atau key, dan satu session dapat mencampur beberapa acquire. Saat transisi leader→follower, request yang sedang commit dapat berdampingan dengan request yang ditolak follower; jadi satu M bukan bukti bahwa pending tertentu pasti tidak mendapat lock. Aturan konservatif ini mencegah acquire ganda dan perpanjangan lease dengan owner yang sama.