ملٹی ورکر آٹومیشن کے لیے براؤزر پروفائل لیز ڈیزائن کرنا

ایک پرانا (stale) لاک ریکوری کا مسئلہ ہے۔ ایک پروفائل لیز رن ٹائم ڈیزائن کا مسئلہ ہے۔

زیادہ تر لوگ سمجھتے ہیں کہ دو ورکرز کو ایک ہی براؤزر پروفائل کھولنے سے روکنے کے لیے صرف ایک لاک فائل کافی ہے۔ جب آپ اسکیل (scale) کرتے ہیں تو یہ ایک غلطی ہے۔

لاک صرف یہ بتاتا ہے کہ آیا کوئی پروفائل مصروف ہے۔ یہ آپ کو یہ نہیں بتاتا کہ آیا پروفائل استعمال کے لیے محفوظ ہے۔

اگر کوئی ورکر لاگ ان کے دوران کریش ہو جائے، تو اکاؤنٹ کی حالت (state) نامعلوم ہوتی ہے۔ اگلا ورکر غلط پیج پر یا خراب کوکیز (corrupted cookies) کے ساتھ شروع ہو سکتا ہے۔ اس سے خاموش ناکامیاں (silent failures) پیدا ہوتی ہیں جنہیں ڈی بگ (debug) کرنا مشکل ہوتا ہے۔

لیز ایک لاک سے کہیں زیادہ ہے۔ یہ آپ کے شیڈیولر (scheduler)، آپ کے ورکر اور آپ کے پروفائل کے درمیان ایک معاہدہ ہے۔

ایک اچھی لیز ان سوالات کے جواب دیتی ہے:

  • اس وقت اس پروفائل کا مالک کون ہے؟
  • کون سا مخصوص رن (run) اسے استعمال کر رہا ہے؟
  • یہ ملکیت کب ختم ہوگی؟
  • اگر ورکر غائب ہو جائے تو کیا ہوگا؟

ایک کم از کم لیز ریکارڈ میں یہ شامل ہونا چاہیے: • profile_id اور account_idworker_id اور run_idproxy_idheartbeat_at (یہ چیک کرنے کے لیے کہ آیا ورکر فعال ہے) • last_safe_step (آخری معلوم شدہ درست حالت چیک کرنے کے لیے) • release_policy

ٹائم ٹو لائیو (TTL) کی میعاد ختم ہونے کو لاک ڈیلیٹ کرنے کے حکم کے طور پر نہ لیں۔ ایک منسوخ شدہ (expired) لیز ایک غیر حل شدہ اختتام ہے۔ ایک صاف ستھرا ریلیز (clean release) ایک قابلِ وضاحت اختتام ہے۔

اگر کوئی ورکر ہارٹ بیٹس (heartbeats) بھیجنا بند کر دے، تو اس پروفائل کو خود بخود دوبارہ استعمال نہ کریں۔ اس کے بجائے پروفائل کو کوارنٹائن (quarantine) حالت میں منتقل کر دیں۔

اپنے پروفائلز کے لیے ان حالتوں (states) کا استعمال کریں:

  • دستیاب (Available): چیک آؤٹ کے لیے تیار۔
  • لیز پر (Leased): فی الحال استعمال میں ہے۔
  • پرانا (Stale): ورکر نے رپورٹ کرنا بند کر دیا؛ حالت نامعلوم ہے۔
  • نظرثانی درکار ہے (Review Required): انسانی مداخلت کی ضرورت ہے۔
  • کوارنٹائن (Quarantined): کلیئر ہونے تک استعمال کے لیے غیر محفوظ۔
  • غیر فعال (Disabled): روٹیشن سے باہر۔

کوارنٹائن کوئی سزا نہیں ہے۔ یہ ایک حفاظتی میکانزم ہے۔ آپ کو پروفائل کو کوارنٹائن کرنا چاہیے اگر:

  • فارم جمع کرواتے وقت ورکر رک گیا۔
  • فائنل URL نامعلوم ہے۔
  • رن کے دوران پراکسی تبدیل ہو گئی۔
  • کوئی سیکیورٹی پرامپٹ ظاہر ہوا۔

لاک ایک پروفائل کو بیک وقت رسائی (simultaneous access) سے بچاتا ہے۔ لیز ایک پروفائل کو غیر محفوظ دوبارہ استعمال سے بچاتی ہے۔

براؤزر پروفائلز کو ڈسپوزایبل فولڈرز کی طرح سمجھنا بند کریں۔ انہیں مینیجڈ اکاؤنٹ انوائرمنٹ (managed account environments) کی طرح سمجھیں۔

ماخذ: https://dev.to/web4browser/designing-browser-profile-leases-for-multi-worker-automation-1bfa