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

प्रतिक्रिया मिलान नियम (क्लाइंट कार्यान्वयन)

चूँकि प्रतिक्रियाएँ अनुरोधों के सापेक्ष क्रम से बाहर आ सकती हैं (प्रतीक्षा करने वाले अधिग्रहण की प्रतिक्रिया उसकी बारी आने पर आती है), क्लाइंट को निम्नलिखित नियमों का उपयोग करके प्रतिक्रियाओं को अनुरोधों के साथ जोड़ना होता है — एक डीमल्टीप्लेक्सिंग योजना जो एक कनेक्शन पर मिली-जुली आने वाली प्रतिक्रियाओं को वापस उनके अनुरोधों के साथ छाँटती है।

नियमविवरण
मिलान कुंजीQueue/server capacity का निश्चित rejection; तुरंत Busy, internal retry नहीं
समान (op, key) के कई अनुरोधFIFO मान लेना मना है — हमेशा पहचान से ही तय करें। नीचे स्पष्टीकरण देखें
पंजीकरण का समयप्रतीक्षक को अनुरोध भेजे जाने से पहले पंजीकृत किया जाता है (ताकि प्रतिक्रिया पहले आने की रेस से बचा जा सके)
N/T की हैंडलिंगगैर-त्रुटि मान के रूप में लौटाया जाता है ("मौजूद नहीं था" / "समय समाप्त")
B की हैंडलिंगकतार भरी है — तुरंत विफल न करें, बल्कि wait के बजट के भीतर बैकऑफ़ के साथ पुनः प्रयास करें
M की हैंडलिंगकेवल allowlisted address को leader hint रखें और connection बंद करें; owner/key बिना sent pending से correlation नहीं
L की हैंडलिंगकेवल leader hint update और connection कायम; server notice, response नहीं
E no_leader / E not_active / E auth_failedConnection बंद और error-specific backoff; no_leader hint भी invalid करता है
अन्य E / अज्ञात प्रतिक्रियाUncorrelatable, इसलिए connection-fatal; sent acquire Indeterminate
बिना मेल खाते प्रतीक्षक वाली प्रतिक्रियाProtocol/session mismatch: बंद। A का known exact token reserved release lane को दें

FIFO नहीं, पहचान से क्यों मिलाना चाहिए

एक key पर भी immediate success, queue wait और B rejection अलग समय पर पूर्ण होते हैं। कई keys भी एक connection पर pipelined हैं। FIFO से match न करें; echoed identifier, op और key तीनों जाँचें।

निरस्त अनुरोध और अनाथ लॉक

Cancelled request को server ने पहले grant किया हो तो lock रह सकता है। एक byte send होने के बाद final response न हो तो परिणाम Indeterminate है। समान owner से A को status query की तरह न भेजें। Token parse हो चुका हो तभी best-effort exact-token R; unknown grant lease expiry पर वापस होगा।

इसीलिए send के बाद cancel या framing error पर connection बंद होता है। केवल pending हटाने से response orphan हो सकता है। Socket close committed grant के release का प्रमाण नहीं: token ज्ञात हो तो exact-token R, नहीं तो lease expiry तक Indeterminate