Khôi phục các khóa hồ sơ trình duyệt bị lỗi thời

Một khóa hồ sơ trình duyệt ngăn chặn hai worker mở cùng một tài khoản cùng một lúc.

Hầu hết các hệ thống đều thất bại khi một worker bị lỗi hoặc mất kết nối mạng. Chúng thấy một khóa cũ, xóa nó đi và để một worker mới tiếp quản. Điều này giúp hàng đợi tiếp tục chạy, nhưng nó làm hỏng trạng thái tài khoản của bạn.

Một khóa lỗi thời (stale lock) không phải là một tệp tin để xóa. Đó là một thao tác chưa hoàn tất cần một lộ trình khôi phục có kiểm soát.

Đừng coi khóa chỉ là một cờ (flag) đơn giản. Giá trị thực sự nằm ở hồ sơ trình duyệt: cookies, local storage và lịch sử phiên làm việc.

Sử dụng một máy trạng thái (state machine) để khôi phục:

• Held (Đang giữ) • Suspected stale (Nghi ngờ lỗi thời) • Quarantined (Đang cách ly) • Inspected (Đã kiểm tra) • Available | Resume pending | Manual review (Sẵn sàng | Chờ tiếp tục | Xem xét thủ công)

Trạng thái Cách ly (Quarantine) là cực kỳ quan trọng. Nó ngăn chặn worker thứ hai nhảy vào trong khi bạn đang điều tra.

Bạn phải sử dụng mô hình cho thuê (lease model) với một mã ngăn chặn (fencing token). Mọi thao tác ghi phải bao gồm một số phiên bản. Nếu một worker cũ hoạt động trở lại sau khi một worker mới đã tiếp quản, hệ thống phải từ chối mã cũ của nó. Điều này ngăn chặn việc làm hỏng dữ liệu âm thầm.

Các nguyên nhân phổ biến gây ra khóa lỗi thời:

  • Tiến trình worker bị lỗi (crash)
  • Máy chủ khởi động lại
  • Công việc vượt quá thời gian chạy cho phép
  • Heartbeat bị dừng
  • Phân mảnh mạng (Network partition)

Một khóa lỗi thời không có nghĩa là hồ sơ đó an toàn. Một worker có vẻ như đã chết, nhưng nó vẫn có thể đang chạy sau một sự chậm trễ mạng.

Trước khi tái sử dụng một hồ sơ, bạn phải thu thập bằng chứng:

  • URL được biết cuối cùng
  • Bước được biết cuối cùng
  • Ảnh chụp màn hình cuối cùng
  • ID Proxy
  • Trạng thái thư mục hồ sơ

Nếu một tác vụ dừng lại trong một hành động nhạy cảm như thanh toán hoặc thay đổi mật khẩu, đừng tự động tiếp tục (auto-resume). Hãy gửi nó để xem xét thủ công.

Bốn kết quả an toàn để khôi phục:

  1. Available (Sẵn sàng): Sử dụng nếu tác vụ chưa bao giờ bắt đầu hoặc thất bại trước khi chạm vào dữ liệu tài khoản.
  2. Resume pending (Chờ tiếp tục): Sử dụng nếu các tác vụ của bạn có các điểm kiểm tra (checkpoints) rõ ràng và an toàn.
  3. Retry (Thử lại): Sử dụng nếu hồ sơ an toàn nhưng tác vụ phải bắt đầu lại từ đầu.
  4. Manual review (Xem xét thủ công): Sử dụng nếu trạng thái không rõ ràng hoặc nhạy cảm.

Đừng đi đường tắt. Đừng xóa thư mục hồ sơ hoặc xóa cookies để sửa một phiên làm việc. Những hành động này làm hỏng ngữ cảnh của tài khoản.

Một hệ thống an toàn tuân theo các quy tắc sau:

  • Một hồ sơ
  • Một quyền sở hữu (owner lease)
  • Một tác vụ đang hoạt động
  • Một dấu vết bằng chứng
  • Một quyết định khôi phục

Khóa chỉ là một triệu chứng. Nhiệm vụ của bạn là bảo vệ môi trường tài khoản đằng sau nó.

Nguồn: https://dev.to/web4browser/recovering-stale-browser-profile-locks-without-corrupting-account-state-2hi