การกู้คืน Browser Profile Lock ที่ค้างอยู่ (Stale)

การล็อกโปรไฟล์เบราว์เซอร์ (browser profile lock) ช่วยป้องกันไม่ให้ worker สองตัวเปิดบัญชีเดียวกันพร้อมกัน

ระบบส่วนใหญ่มักจะล้มเหลวเมื่อ worker เกิดการ crash หรือการเชื่อมต่อเครือข่ายขาดหาย ระบบจะมองเห็น lock เก่า ลบทิ้ง และปล่อยให้ worker ตัวใหม่เข้ามาทำงานแทน วิธีนี้อาจทำให้คิวเดินหน้าต่อไปได้ แต่จะทำให้สถานะของบัญชี (account state) เกิดความเสียหาย

Stale lock ไม่ใช่แค่ไฟล์ที่ควรลบทิ้ง แต่มันคือการทำงานที่ยังไม่เสร็จสิ้น ซึ่งจำเป็นต้องมีเส้นทางการกู้คืน (recovery path) ที่มีการควบคุมอย่างเป็นระบบ

อย่าปฏิบัติกับ lock เป็นเพียงแค่ flag ทั่วไป คุณค่าที่แท้จริงอยู่ที่ browser profile ซึ่งประกอบด้วย cookies, local storage และ session history

ใช้ state machine สำหรับการกู้คืน:

• Held (ถือครองอยู่) • Suspected stale (สงสัยว่าค้าง) • Quarantined (กักกัน) • Inspected (ตรวจสอบแล้ว) • Available | Resume pending | Manual review (พร้อมใช้งาน | รอการเริ่มใหม่ | ตรวจสอบด้วยตนเอง)

สถานะ Quarantine มีความสำคัญมาก เพราะจะช่วยป้องกันไม่ให้ worker ตัวที่สองเข้ามาแทรกแซงในขณะที่คุณกำลังตรวจสอบ

คุณต้องใช้โมเดลการเช่า (lease model) พร้อมกับ fencing token โดยการเขียนข้อมูลทุกครั้งต้องระบุเลขเวอร์ชัน (version number) หาก worker ตัวเก่ากลับมาทำงานหลังจากที่มี worker ตัวใหม่เข้ามาแทนที่แล้ว ระบบจะต้องปฏิเสธ token เก่าของมัน เพื่อป้องกันความเสียหายที่เกิดขึ้นโดยไม่รู้ตัว (silent corruption)

สาเหตุทั่วไปของ stale locks:

  • กระบวนการ worker เกิดการ crash
  • เครื่อง host เริ่มต้นระบบใหม่
  • งานใช้เวลาทำงานเกินกำหนด
  • สัญญาณ heartbeat หยุดทำงาน
  • เครือข่ายถูกตัดขาด (Network partition)

การมี stale lock ไม่ได้หมายความว่าโปรไฟล์นั้นปลอดภัย worker อาจจะดูเหมือนหยุดทำงานไปแล้ว แต่จริงๆ แล้วมันอาจจะยังทำงานอยู่ภายใต้ความล่าช้าของเครือข่าย (network delay)

ก่อนที่จะนำโปรไฟล์กลับมาใช้ใหม่ คุณต้องรวบรวมหลักฐาน:

  • URL ล่าสุดที่ทราบ
  • ขั้นตอนล่าสุดที่ทราบ
  • ภาพหน้าจอล่าสุด
  • Proxy ID
  • สถานะของไดเรกทอรีโปรไฟล์

หากงานหยุดลงระหว่างการดำเนินการที่สำคัญ เช่น การชำระเงิน (checkout) หรือการเปลี่ยนรหัสผ่าน อย่าสั่งให้เริ่มทำงานใหม่โดยอัตโนมัติ แต่ให้ส่งไปที่การตรวจสอบด้วยตนเอง (manual review) แทน

ผลลัพธ์ที่ปลอดภัย 4 รูปแบบสำหรับการกู้คืน:

  1. Available: ใช้ในกรณีที่งานยังไม่เริ่ม หรือล้มเหลวก่อนที่จะมีการแตะต้องข้อมูลบัญชี
  2. Resume pending: ใช้ในกรณีที่งานของคุณมีจุดตรวจสอบ (checkpoints) ที่ชัดเจนและปลอดภัย
  3. Retry: ใช้ในกรณีที่โปรไฟล์ปลอดภัย แต่ต้องเริ่มงานใหม่ตั้งแต่ต้น
  4. Manual review: ใช้ในกรณีที่สถานะมีความคลุมเครือหรือมีความละเอียดอ่อน

เลิกใช้วิธีทางลัด อย่าลบไดเรกทอรีโปรไฟล์หรือล้าง cookies เพื่อแก้ไขเซสชัน เพราะการกระทำเหล่านี้จะทำลายบริบทของบัญชี (account context)

ระบบที่ปลอดภัยควรปฏิบัติตามกฎเหล่านี้:

  • หนึ่งโปรไฟล์
  • หนึ่งการเช่าโดยเจ้าของ (owner lease)
  • หนึ่งงานที่กำลังทำงานอยู่
  • หนึ่งเส้นทางหลักฐาน
  • หนึ่งการตัดสินใจกู้คืน

การล็อกเป็นเพียงแค่อาการเท่านั้น หน้าที่ของคุณคือการปกป้องสภาพแวดล้อมของบัญชีที่อยู่เบื้องหลังมัน

แหล่งที่มา: https://dev.to/web4browser/recovering-stale-browser-profile-locks-without-corrupting-account-state-2hi