فی الحال ٹیسٹنگ جاری ہے: مکمل ہونے پر GitHub کوڈ کھول دیا جائے گا۔

درخواست × کلید-حالت میٹرکس

A (حصول)

کلید کی حالتسرور کا عملجوابوقت
رجسٹر نہیںرجسٹر کریں (میعاد = now+lease)، ٹوکن جاری کریںA+token+owner+keyفوراً
رجسٹر شدہ + میعاد گزریتجدید (now+lease)، نیا ٹوکنA+token+owner+keyفوراً
Registered + valid holder + wait=0Queue میں نہ ڈالیںT+owner+keyفوراً
Registered + valid holder + wait>0Queue میں ڈالیں، response روکیںA یا T+owner+keyrelease/expiry سے acquire، یا wait ختم پر T
Queue یا server capacity حد پرQueue میں نہ ڈالیںB+owner+keyفوراً
  • اجراء کا راستہ FIFO-منصفانہ ہے: جب حاصل کنندہ R کرتا ہے، تو یہ براہ راست قطار کے سب سے آگے والے منتظر کو منتقل ہو جاتا ہے (کوئی دوبارہ مقابلہ نہیں، ایک نیا ٹوکن)۔
  • صرف میعاد ختم ہونے کا راستہ غیر-FIFO ہے۔
  • Current holder کے برابر owner کو خاص برتاؤ نہیں ملتا۔ یہ active token واپس یا lease renew کرنے کا اختیار نہیں؛ عام held-key اصول لاگو ہیں۔
  • Responses request ترتیب سے باہر آ سکتے ہیں؛ client echoed owner سے match کرتا ہے۔ R (اجراء)
کلید کی حالتسرور کا عملجواب
رجسٹر شدہ + ٹوکن مطابق، منتظر موجودسب سے آگے والے منتظر کو براہ راست منتقل کریں (نیا ٹوکن)R+token+key
رجسٹر شدہ + ٹوکن مطابق، کوئی منتظر نہیںکلید حذف کریںR+token+key
رجسٹر شدہ + ٹوکن غیر مطابقکچھ نہیں (لاک برقرار)N+token+key
رجسٹر نہیںکچھ نہیںN+token+key

میعاد ختم ہونے کی پروسیسنگ کا وقت

  • سنگل موڈ میعاد ختم ہونے کو lazy طریقے سے پروسیس کرتا ہے — میعاد گزر چکی کلید کو اگلا حصول اسی لمحے سنبھال لیتا ہے (اوپر دوسری قطار)، اور ایک الگ 5 سیکنڈ کا جھاڑو (sweep) بغیر منتظر والی میعاد ختم شدہ کلیدوں کو صاف کرتا ہے۔ اس لیے میعاد ختم ہو چکی لیکن ابھی صاف نہ ہوئی کلید کا اجراء N کی بجائے R دے سکتا ہے۔
  • Cluster mode میں leader token-validating deadline min-heap کی اگلی deadline تک انتظار کرتا اور key ہٹنے سے پہلے consensus سے Expire command commit کرتا ہے۔ اس طرح node clock فرق lock state تقسیم نہیں کرتا۔