This adds a circuit breaker for uncaught failures in beforeEach. The first failure still goes through the normal ERROR/RESTART recovery path; a second consecutive failure redirects to the static error page instead of looping. - New before-each-error-recovery module tracks recovery attempts in sessionStorage (with an in-memory fallback). - ERROR/RESTART routes skip normal guard logic so the counter can accumulate across bounce-backs. - The counter clears only after a fully successful navigation. - redirectToStaticErrorPage centralizes hard-error bailout: logs, clears poisoned sessionStorage keys (submittedState, heritage redirect count, recovery count, externalParameterState), then navigates to /fmg/static/error. - The static error page RESTART flow clears the same sessionStorage keys so bad state does not re-enter the funnel. - Session storage key strings are centralized in session-storage.js. - Unit tests cover recovery counting, bailout clearing, and navigation fallbacks. Expected impact: Stops repeated ERROR → RESTART → ERROR cycles (including corrupt submittedState JSON.parse failures and recurring automation errors in us-east-1/us-east-2) by bailing out to the static error page after one failed recovery attempt.
9 lines
583 B
JavaScript
9 lines
583 B
JavaScript
export const sessionStorageKeyConstants = {
|
|
SUBMITTED_STATE: "submittedState",
|
|
/** Counts SuppressConceptFunnel → heritage redirects to avoid an infinite loop in one tab session. */
|
|
HERITAGE_SUPPRESS_REDIRECT_COUNT: "heritageSuppressRedirectCount",
|
|
/** Counts beforeEach uncaught-exception recovery attempts to avoid an infinite ERROR redirect loop. */
|
|
BEFORE_EACH_ERROR_RECOVERY_COUNT: "beforeEachErrorRecoveryCount",
|
|
/** Persists deep-link / querystring funnel entry state across navigations. */
|
|
EXTERNAL_PARAMETER_STATE: "externalParameterState",
|
|
};
|