বর্তমানে পরীক্ষা চলছে: সম্পূর্ণ হলে GitHub কোড উন্মুক্ত করা হবে।

A · অর্জন

গঠনrefresh

এটি lock acquire request। lease হলো safety period: client release না করে শেষ হলে server expiry-র পর key ফিরিয়ে নেয়। wait সেকেন্ডে অপেক্ষার সীমা; 0 queue-তে না গিয়ে একবার তাৎক্ষণিক চেষ্টা করে। অসীম অপেক্ষা নেই। সফল হলে Acquired A, wait শেষ হলে Timeout T, এবং queue/server capacity পূর্ণ হলে Busy B

owner — Response correlation identifier

owner হলো একটি acquire চেষ্টার response ID। Client প্রতি call-এ নতুন মান তৈরি করে এবং server A, T, B-তে একই মান echo করে, যাতে pipeline response মেলানো যায়।

owner lock authority বা fencing token নয়। একই key ও owner আবার পাঠালে active token ফেরে না বা lease renew হয় না। Request-এর একটি byte-ও পাঠানো হয়ে থাকতে পারে এবং response নিশ্চিত না হলে client একই owner দিয়ে acquire auto-resend করবে না; ফল Indeterminate। Critical section-এ ঢোকা যাবে না, এবং অদেখা grant সর্বোচ্চ lease expiry-তে ফেরত নেওয়া হয়।

অফিসিয়াল clients caller-এর normalized wait থেকে পুরো operation-এর একটি monotonic deadline কেবল একবার তৈরি করে এবং নিশ্চিত unsent retry-তে একই deadline ও owner রাখে। Send-এর ঠিক আগে writer অবশিষ্ট সময় ওপরের দিকে round করে wire wait আবার গণনা করে, তাই দেরিতে পাওয়া connection server-এ নতুন 255-সেকেন্ড wait শুরু করে না। পুরো deadline পেরোনো queued request পাঠানো হয় না; সেটি আগে পাঠানো হয়ে থাকতে পারে হলে তার exact session বন্ধ করে Indeterminate ফেরানো হয়। deadline-এর ঠিক আগে correlated A Ticket delivery ধাপে দেরিতে ধরা পড়লে session বন্ধ করা দরকার নেই, তবে exact token-এর compensating release schedule করে Indeterminate ফেরানো হয়। Correlated TB যথাক্রমে নিশ্চিত timeout ও নিশ্চিত busy থাকে।

মূল wait=0 wire-এ immediate attempt-ই থাকে। এর আলাদা 5-সেকেন্ড transport deadline-এ client কেবল request নিশ্চিত unsent থাকা পর্যন্ত অন্য connection বেছে একই owner দিয়ে retry করতে পারে; বাস্তব server-side attempt এখনও ঠিক একটি। Possible send-এর পরে কখনো retransmit করে না।

বাইট নোটেশন: op একটি ASCII অক্ষর, wait/lease বাইনারি (u8, বিগ-এন্ডিয়ান), owner বাইনারি (u64, বিগ-এন্ডিয়ান), আর key UTF-8 টেক্সট (পরিবর্তনশীল-দৈর্ঘ্যের, স্ট্রাকচারে N হিসেবে দেখানো)। শেষের \n হলো 0A। ফিক্সড হেডার বাইনারি মান বলে এতে 0x0A থাকতে পারে, তাই নিউলাইন খোঁজার আগে বাইট-সংখ্যা অনুযায়ী আগে গ্রাস করতে হবে।

প্রবাহ

ক্লায়েন্ট
সার্ভার
A · অর্জন (key · wait · lease · owner)
খালি কী → তাৎক্ষণিক ইস্যু
A · অর্জিত (token)
দখলে আছে → FIFO সারিতে পালার অপেক্ষা
পালা এলে A · অর্জিত (token)
wait পার হলে T · টাইমআউট
wait=0 + lock held → T · তাৎক্ষণিকভাবে অর্জিত নয়
সারি পূর্ণ → B · ব্যস্ত
অনুরোধপ্রতিক্রিয়া

কী-স্টেট অনুযায়ী আচরণের সম্পূর্ণ নিয়মের জন্য দেখুন অনুরোধ × কী-স্টেট ম্যাট্রিক্স