𝗗𝗲𝘀𝗶𝗴𝗻𝗶𝗻𝗴 𝗕𝗿𝗼𝘄𝘀𝗲𝗿 𝗣𝗿𝗼𝗳𝗶𝗹𝗲 𝗟𝗲𝗮𝘀𝗲𝘀 𝗳𝗼𝗿 𝗠𝘂𝗹𝘁𝗶-𝗪𝗼𝗿𝗸𝗲𝗿 𝗔𝘂𝘁𝗼𝗺𝗮𝘁𝗶𝗼𝗻

یک قفل قدیمی (stale lock) یک مشکل بازیابی است. یک اجاره‌ی پروفایل (profile lease) یک مشکل طراحی زمان اجرا (runtime) است.

اکثر مردم فکر می‌کنند یک فایل قفل برای جلوگیری از باز شدن یک پروفایل مرورگر توسط دو کارگر کافی است. وقتی مقیاس کار را بالا می‌برید، این یک اشتباه است.

یک قفل فقط به شما می‌گوید که آیا یک پروفایل مشغول است یا خیر. اما به شما نمی‌گوید که آیا استفاده از آن پروفایل ایمن است یا خیر.

اگر یک کارگر در میانه فرآیند ورود (login) کرش کند، وضعیت حساب مشخص نیست. کارگر بعدی ممکن است از صفحه اشتباه یا با کوکی‌های خراب شروع به کار کند. این امر باعث بروز شکست‌های خاموش (silent failures) می‌شود که عیب‌یابی آن‌ها دشوار است.

یک اجاره (lease) چیزی فراتر از یک قفل است. این یک قرارداد بین زمان‌بند (scheduler)، کارگر و پروفایل شماست.

یک اجاره‌ی خوب به این سوالات پاسخ می‌دهد:

  • در حال حاضر مالک این پروفایل کیست؟
  • کدام اجرای (run) خاص از آن استفاده می‌کند؟
  • این مالکیت چه زمانی منقضی می‌شود؟
  • اگر کارگر ناپدید شود چه اتفاقی می‌افتد؟

یک رکورد اجاره‌ی حداقلی باید شامل موارد زیر باشد: • profile_id و account_idworker_id و run_idproxy_idheartbeat_at (برای بررسی زنده بودن کارگر) • last_safe_step (برای بررسی آخرین وضعیت معتبر شناخته شده) • release_policy

انقضای زمان بقا (TTL) را به عنوان دستوری برای حذف قفل در نظر نگیرید. یک اجاره‌ی منقضی شده، یک پایان حل‌نشده است. یک آزادسازی تمیز (clean release)، یک پایان قابل توضیح است.

اگر کارگری ارسال ضربان قلب (heartbeat) را متوقف کرد، آن پروفایل را به طور خودکار دوباره استفاده نکنید. در عوض، پروفایل را به وضعیت قرنطینه منتقل کنید.

از این وضعیت‌ها برای پروفایل‌های خود استفاده کنید:

  • Available (موجود): آماده برای رزرو.
  • Leased (اجاره شده): در حال استفاده.
  • Stale (نامعتبر): کارگر گزارش‌دهی را متوقف کرده؛ وضعیت نامشخص است.
  • Review Required (نیاز به بررسی): نیاز به بازبینی انسانی دارد.
  • Quarantined (قرنطینه شده): تا زمان رفع مشکل، استفاده از آن ناامن است.
  • Disabled (غیرفعال): خارج از چرخه استفاده.

قرنطینه یک تنبیه نیست، بلکه یک مکانیزم ایمنی است. شما باید یک پروفایل را قرنطینه کنید اگر:

  • کارگر در حین ارسال فرم از کار افتاد.
  • URL نهایی مشخص نیست.
  • پروکسی در میانه اجرا تغییر کرد.
  • یک اعلان امنیتی (security prompt) ظاهر شد.

یک قفل از پروفایل در برابر دسترسی همزمان محافظت می‌کند. یک اجاره از پروفایل در برابر استفاده‌ی ناایمن محافظت می‌کند.

از برخورد با پروفایل‌های مرورگر مانند پوشه‌های یک‌بار مصرف خودداری کنید. با آن‌ها مانند محیط‌های مدیریت‌شده‌ی حساب کاربری رفتار کنید.

Source: https://dev.to/web4browser/designing-browser-profile-leases-for-multi-worker-automation-1bfa