অকেজো ব্রাউজার প্রোফাইল লক পুনরুদ্ধার করা

একটি ব্রাউজার প্রোফাইল লক একই সাথে দুইজন ওয়ার্কারকে (worker) একই অ্যাকাউন্ট খোলার ক্ষেত্রে বাধা দেয়।

বেশিরভাগ অটোমেশন সিস্টেম রিকভারির সময় ব্যর্থ হয়। যখন কোনো ওয়ার্কার ক্র্যাশ করে বা নেটওয়ার্ক সংযোগ হারিয়ে ফেলে, সিস্টেম একটি পুরোনো লক দেখে এবং সেটি মুছে ফেলে। এতে কিউ (queue) চললেও আপনার অ্যাকাউন্টের স্টেট (state) বা অবস্থা ক্ষতিগ্রস্ত হয়।

একটি অকেজো লক (stale lock) কেবল মুছে ফেলার মতো কোনো ফাইল নয়। এটি একটি অসমাপ্ত অপারেশন যা একটি নিয়ন্ত্রিত রিকভারি পথের প্রয়োজন।

লকগুলোকে সাধারণ ফাইল হিসেবে দেখা বন্ধ করুন। সেগুলোকে লিজ (lease) হিসেবে বিবেচনা করুন।

একটি নিরাপদ লিজের প্রয়োজন:

  • একজন মালিক (owner)
  • একটি মেয়াদ শেষ হওয়ার সময় (expiry time)
  • একটি হার্টবিট (heartbeat)
  • একটি ভার্সন নম্বর (fencing token)

ভার্সন নম্বরটি অত্যন্ত গুরুত্বপূর্ণ। প্রতিটি রাইট (write) অপারেশনে অবশ্যই সর্বশেষ টোকেনটি অন্তর্ভুক্ত থাকতে হবে। যদি নতুন কোনো ওয়ার্কার দায়িত্ব নেওয়ার পর পুরোনো কোনো ওয়ার্কার ফিরে আসে, তবে সিস্টেম পুরোনো টোকেনটি প্রত্যাখ্যান করবে। এটি নিঃশব্দে ডেটা নষ্ট হওয়া (silent corruption) রোধ করে।

সরাসরি 'locked' থেকে 'available' অবস্থায় চলে যাবেন না। এই ধাপগুলোর মধ্য দিয়ে যাওয়ার জন্য একটি স্টেট মেশিন (state machine) ব্যবহার করুন:

  • Held
  • Suspected stale
  • Quarantined
  • Inspected
  • Available | Resume pending | Manual review

কোয়ারেন্টাইন (quarantine) পর্যায়টি অত্যন্ত গুরুত্বপূর্ণ। আপনি যখন তদন্ত করবেন, তখন এটি দ্বিতীয় কোনো ওয়ার্কারকে প্রোফাইলটি স্পর্শ করা থেকে বিরত রাখে।

তদন্তের সময় আপনাকে অবশ্যই প্রমাণ সংগ্রহ করতে হবে:

  • ব্রাউজার প্রসেসটি কি তখনও চলছিল?
  • সর্বশেষ জানা URL কী ছিল?
  • টাস্কটি কি চেকআউট বা সেটিংস পরিবর্তনের মতো কোনো সংবেদনশীল ধাপে ছিল?
  • ব্যর্থতার কোনো স্ক্রিনশট আছে কি?

যদি কোনো সংবেদনশীল অপারেশনের সময় টাস্কটি থেমে যায়, তবে স্বয়ংক্রিয়ভাবে রজিউ (auto-resume) করবেন না। এটিকে ম্যানুয়াল রিভিউতে পাঠান। ভুল সিদ্ধান্ত এড়াতে অটোমেশনের নির্দিষ্ট সীমা থাকা উচিত।

এড়িয়ে চলার মতো সাধারণ ভুলগুলো:

  • প্রোফাইলের নিরাপত্তা যাচাই না করেই লক মুছে ফেলা।
  • পুরোনো ওয়ার্কারদের দেরিতে করা রাইট (late writes) প্রত্যাখ্যান করার জন্য ফেন্সিং টোকেন (fencing tokens) ব্যবহার না করা।
  • কোনো নিরাপদ চেকপয়েন্ট (checkpoint) ছাড়াই ফর্ম সাবমিশন পুনরায় চেষ্টা করা।
  • রিকভারি প্রক্রিয়ার সময় প্রক্সি পরিবর্তন করা।

লক্ষ্য রিকভারিকে জটিল করা নয়। লক্ষ্য হলো এটিকে সুস্পষ্ট (explicit) করা।

লক কেবল একটি উপসর্গ মাত্র। আপনার সিস্টেমকে সেই লকের পেছনের অ্যাকাউন্ট এনভায়রনমেন্টকে (account environment) রক্ষা করতে হবে।

একটি প্রোফাইল। একজন মালিকের লিজ। একটি সক্রিয় টাস্ক। একটি প্রমাণের সূত্র। একটি রিকভারি সিদ্ধান্ত।

উৎস: https://dev.to/web4browser/recovering-stale-browser-profile-locks-without-corrupting-account-state-2hi