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

M · স্থানান্তরিত

গঠনrefresh

এই নোড লিডার নয়, তাই লিডারের কাছে যান — এই বার্তা (শুধু ক্লাস্টারে)। বডিতে থাকে লিডারের ক্লায়েন্ট ঠিকানা (host:port) টেক্সট হিসেবে — Raft পোর্ট নয়, ক্লায়েন্ট সরাসরি যে ঠিকানায় সংযোগ করবে সেটাই।

অফিসিয়াল ক্লায়েন্ট ঠিকানাটি আগে থেকে নিবন্ধিত allowlist ঠিকানার সঙ্গে হুবহু মিললেই leader hint হিসেবে রাখে, তারপর session বন্ধ করে। যে acquire-এর এক byte-ও পাঠানো হয়ে থাকতে পারে তাকে M-এর সঙ্গে ইচ্ছামতো মেলানো বা auto-resend করা হয় না; ফল Indeterminate পরের স্বাধীন request এবং writer এখনো না নেওয়া unsent request নতুন leader connection ব্যবহার করে। লিডার এখনো নির্বাচিত না হয়ে থাকলে এবং জানানোর মতো ঠিকানা না থাকলে এর বদলে E no_leader আসে।

বিস্তারিত ক্লাস্টার আচরণের জন্য দেখুন প্রোটোকল (ক্লাস্টার)

বাইট নোটেশন: op একটি ASCII অক্ষর, আর addr UTF-8 টেক্সট (পরিবর্তনশীল-দৈর্ঘ্যের, স্ট্রাকচারে N হিসেবে দেখানো)। শেষের \n হলো 0A

প্রবাহ

ক্লায়েন্ট
ফলোয়ার
লিডার
A · অর্জন (key)
M · স্থানান্তরিত (লিডারের ঠিকানা)
পুরোনো session বন্ধ · পাঠানো acquire = Indeterminate
পরের স্বাধীন acquire leader-এ শুরু
অনুরোধপ্রতিক্রিয়া

M-এ owner বা key নেই, এবং এক session-এ একাধিক acquire মিশতে পারে। leader→follower পরিবর্তনের সময় commit হওয়া request ও follower-এর প্রত্যাখ্যাত request একসঙ্গে থাকতে পারে; তাই একটি M কোনো নির্দিষ্ট pending-এর নিশ্চিত non-acquisition প্রমাণ নয়। এই conservative rule duplicate acquire ও same-owner lease extension ঠেকায়।