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

مصفوفة الطلب × حالة المفتاح

A (حصول)

حالة المفتاحفعل الخادمالاستجابةالتوقيت
غير مسجَّلتسجيل (انتهاء = now+lease)، إصدار رمزA+token+owner+keyفورًا
مسجَّل + منتهٍتجديد (now+lease)، رمز جديدA+token+owner+keyفورًا
مسجلة + holder صالح + wait=0لا تدخل queueT+owner+keyفوري
مسجلة + holder صالح + wait>0تدخل queue وتُعلّق الاستجابةA أو T+owner+keyعند acquire عبر release/expiry أو T عند انتهاء wait
Queue أو server capacity عند الحدلا تدخل queueB+owner+keyفوري
  • مسار التحرير عادل بنظام FIFO: عندما يقوم الحائز بـ R، يُسلَّم مباشرة إلى المنتظر في مقدمة الطابور (دون إعادة تنافس، برمز جديد).
  • مسار الانتهاء وحده غير FIFO.
  • لا يحظى owner المطابق للـholder الحالي بمعاملة خاصة. ليس صلاحية لإعادة active token أو تجديد lease؛ تطبق قواعد الـkey المحجوزة العادية.
  • قد تصل الاستجابات خارج ترتيب الطلبات؛ يطابقها العميل عبر owner المعاد echo. R (تحرير)
حالة المفتاحفعل الخادمالاستجابة
مسجَّل + تطابق الرمز، له منتظرونتسليم مباشر للمنتظر في المقدمة (رمز جديد)R+token+key
مسجَّل + تطابق الرمز، بلا منتظرينحذف المفتاحR+token+key
مسجَّل + اختلاف الرمزلا شيء (يبقى القفل)N+token+key
غير مسجَّللا شيءN+token+key

توقيت معالجة الانتهاء

  • الوضع المفرد يعالج الانتهاء بكسل (lazy) — يتولى المفتاح الذي تجاوز انتهاءه أول حصول تالٍ فورًا (الصف الثاني أعلاه)، وينظف مسح دوري كل 5 ثوانٍ المفاتيح المنتهية بلا منتظرين. لذا فإن تحرير مفتاح انتهى لكن لم يُنظَّف بعد قد يُرجع R بدلًا من N.
  • في cluster mode ينتظر leader الموعد التالي في token-validating deadline min-heap ثم commit أمر Expire بالإجماع قبل اختفاء key. هكذا لا يقسم فرق clock بين العقد حالة lock.