वर्तमान में परीक्षण चल रहा है: पूरा होने पर GitHub कोड खोला जाएगा।

अनुरोध × कुंजी-स्थिति मैट्रिक्स

A (अधिग्रहण)

कुंजी स्थितिसर्वर कार्रवाईप्रतिक्रियासमय
पंजीकृत नहींपंजीकरण (expiry = 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-सेकंड की सफ़ाई प्रक्रिया बिना प्रतीक्षक वाली समाप्त कुंजियों को साफ़ करती है। इसलिए समाप्त हो चुकी लेकिन अभी तक साफ़ न हुई कुंजी पर रिलीज़, N के बजाय R दे सकता है।
  • Cluster mode में leader token-validating deadline min-heap की अगली deadline तक प्रतीक्षा करता और key हटने से पहले consensus से Expire command commit करता है। इससे node clock अंतर lock state नहीं बाँटता।