بازیابی قفل‌های قدیمی پروفایل مرورگر

قفل پروفایل مرورگر از باز شدن هم‌زمان یک حساب توسط دو کارگر (worker) جلوگیری می‌کند.

اکثر سیستم‌های اتوماسیون در مرحله بازیابی شکست می‌خورند. وقتی یک کارگر کرش می‌کند یا اتصال شبکه را از دست می‌دهد، سیستم یک قفل قدیمی را می‌بیند و آن را حذف می‌کند. این کار باعث حرکت صف می‌شود، اما وضعیت حساب شما را خراب می‌کند.

یک قفل قدیمی (stale lock) صرفاً فایلی برای حذف کردن نیست؛ بلکه یک عملیات ناتمام است که به یک مسیر بازیابی کنترل‌شده نیاز دارد.

از برخورد با قفل‌ها به عنوان فایل‌های ساده دست بردارید. با آن‌ها مانند اجاره‌نامه‌ها (leases) برخورد کنید.

یک اجاره‌نامه امن به موارد زیر نیاز دارد:

  • یک مالک
  • یک زمان انقضا
  • یک ضربان قلب (heartbeat)
  • یک شماره نسخه (fencing token)

شماره نسخه حیاتی است. هر عملیات نوشتن باید شامل آخرین توکن باشد. اگر یک کارگر قدیمی پس از اینکه کارگر جدید مسئولیت را بر عهده گرفت بازگردد، سیستم توکن قدیمی را رد می‌کند. این کار از خرابی بی‌صدا (silent corruption) جلوگیری می‌کند.

از حالت قفل‌شده (locked) مستقیماً به حالت در دسترس (available) نروید. از یک ماشین حالت (state machine) برای عبور از این مراحل استفاده کنید:

  • در حال نگهداشت (Held)
  • مشکوک به قدیمی بودن (Suspected stale)
  • قرنطینه شده (Quarantined)
  • بازرسی شده (Inspected)
  • در دسترس | در انتظار ادامه | بررسی دستی

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

در طول بررسی، باید شواهد را جمع‌آوری کنید:

  • آیا فرآیند مرورگر همچنان در حال اجرا بود؟
  • آخرین URL شناخته شده چه بود؟
  • آیا تسک در یک مرحله حساس مانند پرداخت (checkout) یا تغییر تنظیمات بود؟
  • آیا اسکرین‌شاتی از خطا وجود دارد؟

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

اشتباهات رایجی که باید از آن‌ها اجتناب کرد:

  • حذف قفل بدون بررسی امنیت پروفایل.
  • عدم استفاده از fencing tokenها برای رد کردن نوشتن‌های دیرهنگام توسط کارگرهای قدیمی.
  • تلاش مجدد برای ارسال فرم‌ها بدون داشتن یک نقطه بازرسی (checkpoint) امن و شناخته شده.
  • تغییر پروکسی‌ها در طول فرآیند بازیابی.

هدف پیچیده کردن بازیابی نیست؛ هدف صریح و شفاف کردن آن است.

قفل تنها یک علامت (symptom) است. سیستم شما باید از محیط حساب کاربری که پشت آن قفل قرار دارد محافظت کند.

یک پروفایل. یک اجاره‌نامه مالک. یک تسک فعال. یک ردپای شواهد. یک تصمیم برای بازیابی.

منبع: https://dev.to/web4browser/recovering-stale-browser-profile-locks-without-corrupting-account-state-2hi