𝗥𝗲𝗰𝗼𝘃𝗲𝗿𝗶𝗻𝗴 𝗦𝘁𝗮𝗹𝗲 𝗕𝗿𝗼𝘄𝘀𝗲𝗿 𝗣𝗿𝗼𝗳𝗶𝗹𝗲 𝗟𝗼𝗰𝗸𝘀

ഒരേ സമയം രണ്ട് വർക്കർമാർക്ക് ഒരേ അക്കൗണ്ട് തുറക്കുന്നത് തടയാൻ ഒരു ബ്രൗസർ പ്രൊഫൈൽ ലോക്ക് സഹായിക്കുന്നു.

മിക്ക ഓട്ടോമേഷൻ സിസ്റ്റങ്ങളും വീണ്ടെടുക്കൽ (recovery) സമയത്ത് പരാജയപ്പെടുന്നു. ഒരു വർക്കർ ക്രാഷ് ആകുകയോ നെറ്റ്‌വർക്ക് നഷ്ടപ്പെടുകയോ ചെയ്യുമ്പോൾ, സിസ്റ്റം പഴയൊരു ലോക്ക് കാണുകയും അത് ഡിലീറ്റ് ചെയ്യുകയും ചെയ്യുന്നു. ഇത് ക്യൂ (queue) മുന്നോട്ട് നീങ്ങാൻ സഹായിക്കുമെങ്കിലും, നിങ്ങളുടെ അക്കൗണ്ട് സ്റ്റേറ്റ് (account state) തെറ്റായിപ്പോകാൻ ഇത് കാരണമാകും.

കാലഹരണപ്പെട്ട ഒരു ലോക്ക് എന്നത് ഡിലീറ്റ് ചെയ്യേണ്ട ഒരു ഫയലല്ല. അത് നിയന്ത്രിതമായ ഒരു വീണ്ടെടുക്കൽ പാത (controlled recovery path) ആവശ്യമുള്ള പൂർത്തിയാകാത്ത ഒരു പ്രവർത്തനമാണ്.

ലോക്കുകളെ വെറും ഫയലുകളായി കാണുന്നത് നിർത്തുക. അവയെ ലീസുകളായി (leases) പരിഗണിക്കുക.

ഒരു സുരക്ഷിതമായ ലീസിന് ഇവ ആവശ്യമാണ്:

  • ഒരു ഉടമ (An owner)
  • കാലാവധി കഴിയുന്ന സമയം (An expiry time)
  • ഹാർട്ട്ബീറ്റ് (A heartbeat)
  • ഒരു വേർഷൻ നമ്പർ (fencing token)

വേർഷൻ നമ്പർ വളരെ പ്രധാനമാണ്. ഓരോ റൈറ്റിലും (write) ഏറ്റവും പുതിയ ടോക്കൺ ഉൾപ്പെടുത്തണം. ഒരു പുതിയ വർക്കർ ചുമതലയേറ്റ ശേഷം പഴയൊരു വർക്കർ തിരിച്ചുവരികയാണെങ്കിൽ, സിസ്റ്റം പഴയ ടോക്കൺ നിരസിക്കും. ഇത് അറിയാതെ സംഭവിക്കുന്ന ഡാറ്റാ തകരാറുകൾ (silent corruption) തടയുന്നു.

ലോക്ക് ചെയ്ത അവസ്ഥയിൽ നിന്ന് നേരിട്ട് ലഭ്യമായ (available) അവസ്ഥയിലേക്ക് മാറരുത്. ഈ ഘട്ടങ്ങളിലൂടെ കടന്നുപോകാൻ ഒരു സ്റ്റേറ്റ് മെഷീൻ (state machine) ഉപയോഗിക്കുക:

  • Held
  • Suspected stale
  • Quarantined
  • Inspected
  • Available | Resume pending | Manual review

ക്വാറന്റൈൻ (quarantine) ഘട്ടം വളരെ നിർണ്ണായകമാണ്. നിങ്ങൾ അന്വേഷണം നടത്തുന്ന സമയത്ത് രണ്ടാമതൊരു വർക്കർ പ്രൊഫൈലിൽ മാറ്റങ്ങൾ വരുത്തുന്നത് ഇത് തടയുന്നു.

അന്വേഷണ വേളയിൽ, നിങ്ങൾ തെളിവുകൾ ശേഖരിക്കണം:

  • ബ്രൗസർ പ്രോസസ്സ് ഇപ്പോഴും പ്രവർത്തിക്കുന്നുണ്ടായിരുന്നോ?
  • അവസാനമായി അറിയപ്പെട്ടിരുന്ന URL എന്തായിരുന്നു?
  • ചെക്ക്ഔട്ട് അല്ലെങ്കിൽ സെറ്റിംഗ്സ് മാറ്റങ്ങൾ പോലുള്ള സെൻസിറ്റീവ് ആയ ഒരു ഘട്ടത്തിലായിരുന്നോ ടാസ്ക്?
  • പരാജയപ്പെട്ടതിന്റെ സ്ക്രീൻഷോട്ട് ലഭ്യമാണോ?

ഒരു സെൻസിറ്റീവ് ഓപ്പറേഷൻ നടക്കുമ്പോൾ ഒരു ടാസ്ക് നിലച്ചാൽ, അത് ഓട്ടോമാറ്റിക്കായി പുനരാരംഭിക്കരുത് (auto-resume). പകരം അത് മാനുവൽ റിവ്യൂവിന് (manual review) അയക്കുക. തെറ്റായ തീരുമാനങ്ങൾ ഒഴിവാക്കാൻ ഓട്ടോമേഷന് കൃത്യമായ അതിർവരമ്പുകൾ ഉണ്ടായിരിക്കണം.

ഒഴിവാക്കേണ്ട പൊതുവായ തെറ്റുകൾ:

  • പ്രൊഫൈലിന്റെ സുരക്ഷ പരിശോധിക്കാതെ ലോക്ക് ഡിലീറ്റ് ചെയ്യുന്നത്.
  • പഴയ വർക്കർമാരിൽ നിന്നുള്ള വൈകിയുള്ള റൈറ്റുകൾ (late writes) നിരസിക്കാൻ ഫെൻസിംഗ് ടോക്കണുകൾ (fencing tokens) ഉപയോഗിക്കാത്തത്.
  • സുരക്ഷിതമായ ഒരു ചെക്ക്പോയിന്റ് (checkpoint) ഇല്ലാതെ ഫോം സബ്മിഷനുകൾ വീണ്ടും ശ്രമിക്കുന്നത്.
  • റിക്കവറി പ്രക്രിയയ്ക്കിടെ പ്രോക്സികൾ (proxies) മാറ്റുന്നത്.

വീണ്ടെടുക്കൽ പ്രക്രിയ സങ്കീർണ്ണമാക്കുക എന്നതല്ല ലക്ഷ്യം. മറിച്ച് അത് വ്യക്തമാക്കുക എന്നതാണ് ലക്ഷ്യം.

ഒരു ലോക്ക് എന്നത് വെറുമൊരു ലക്ഷണമാണ്. ആ ലോക്കിന് പിന്നിലുള്ള അക്കൗണ്ട് എൻവയോൺമെന്റിനെ (account environment) നിങ്ങളുടെ സിസ്റ്റം സംരക്ഷിക്കണം.

ഒരു പ്രൊഫൈൽ. ഒരു ഉടമ ലീസ് (owner lease). ഒരു ആക്റ്റീവ് ടാസ്ക്. ഒരു തെളിവ് പാത (evidence trail). ഒരു വീണ്ടെടുക്കൽ തീരുമാനം.

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