अनुरोध × कुंजी-स्थिति मैट्रिक्स
A (अधिग्रहण)
| कुंजी स्थिति | सर्वर कार्रवाई | प्रतिक्रिया | समय |
|---|---|---|---|
| पंजीकृत नहीं | पंजीकरण (expiry = now+lease), टोकन जारी | A+token+owner+key | तुरंत |
| पंजीकृत + समाप्त | नवीनीकरण (now+lease), नया टोकन | A+token+owner+key | तुरंत |
Registered + valid holder + wait=0 | Queue में न डालें | T+owner+key | तुरंत |
Registered + valid holder + wait>0 | Queue में डालें, response रोकें | A या T+owner+key | release/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 से
Expirecommand commit करता है। इससे node clock अंतर lock state नहीं बाँटता।