قيد الاختبار حاليًا: سيتم فتح كود GitHub عند الاكتمال.

M · تم النقل

البنيةrefresh

يُخبر العميل أن هذه العقدة ليست القائد، فليتوجه إلى القائد بدلًا منها (خاص بالعنقود فقط). الجسم هو عنوان العميل الخاص بالقائد (host:port) كنص — العنوان الذي يتصل به العميل نفسه، وليس منفذ Raft.

لا يحفظ العميل الرسمي العنوان كتلميح leader إلا إذا طابق تمامًا عنوانًا مسجلًا مسبقًا في allowlist، ثم يغلق تلك session. أي acquire ربما أُرسل منه بايت واحد لا يُربط اعتباطيًا بـM ولا يُعاد إرساله؛ بل ينتهي Indeterminate. تستخدم الطلبات المستقلة اللاحقة والطلبات غير المرسلة التي لم يمسكها writer بعد اتصال leader الجديد. إذا لم يُنتخب قائد بعد ولم يكن هناك عنوان لتوجيه إليه، تُرسل بدلًا من ذلك E no_leader.

راجع البروتوكول (العنقود) لسلوك العنقود الكامل.

ترميز البايتات: op حرف ASCII، وaddr نص UTF-8 (متغير الطول، يُعرض كـ N في البنية). \n الأخير هو 0A.

التدفق

العميل
تابع
قائد
A · حصول (key)
M · تم النقل (عنوان القائد)
إغلاق session القديمة · acquire المرسل = Indeterminate
بدء acquire مستقل تالٍ عند القائد
طلباستجابة

لا يحتوي M على owner أو key، ويمكن أن تجمع session واحدة عدة acquires. عند انتقال leader→follower قد تتعايش طلبات قيد commit مع طلبات رفضها التابع، لذلك لا يثبت M واحد أن pending بعينه لم يكتسب القفل. تمنع هذه القاعدة المحافظة acquire المكرر وتمديد lease بالـowner نفسه.