/*! * @license * Copyright Squiz Australia Pty Ltd. All Rights Reserved. */ /** * Retry configuration with exponential backoff delays in seconds. * Using SQS message timer limits (max 15 minutes = 900 seconds). * * Delays: 30s, 1min, 2min, 5min, 10min, then 15min thereafter. */ export const RETRY_DELAYS_SECONDS: ReadonlyArray = [30, 60, 120, 300, 600, 900, 900, 900, 900, 900]; /** * Maximum number of retry attempts for container start failures. */ export const MAX_RETRY_ATTEMPTS = RETRY_DELAYS_SECONDS.length; /** * Maximum number of total attempts for opted-in job code failures. * This allows the initial attempt plus 3 retries. */ export const MAX_JOB_CODE_RETRY_ATTEMPTS = 4; /** * After a job has attempted to be started this number of times alerts will start to be sent. */ export const ALERT_AFTER_ATTEMPTS = 2; /** * Get the delay in seconds for a given retry attempt. * @param retryAttempt - The current retry attempt (0-indexed) * @returns The delay in seconds for this retry attempt */ export const getRetryDelaySeconds = (retryAttempt: number): number => { if (retryAttempt >= RETRY_DELAYS_SECONDS.length) { return RETRY_DELAYS_SECONDS[RETRY_DELAYS_SECONDS.length - 1]; } return RETRY_DELAYS_SECONDS[retryAttempt]; };