From ffc9b63ab1c0104ea3dd8caa91344b5eb440e048 Mon Sep 17 00:00:00 2001 From: Jakob Ackermann Date: Tue, 7 Feb 2023 14:58:39 +0000 Subject: [PATCH] Merge pull request #11676 from overleaf/jpa-faster-access-check [web] run all the user-content-domain-access-check probes in parallel GitOrigin-RevId: 1b5a4756064053639e0dbc899d75ba8c0a5c5557 --- .../user-content-domain-access-check/index.ts | 52 ++++++++++--------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/services/web/frontend/js/features/user-content-domain-access-check/index.ts b/services/web/frontend/js/features/user-content-domain-access-check/index.ts index c38920401d..4eda09b8d4 100644 --- a/services/web/frontend/js/features/user-content-domain-access-check/index.ts +++ b/services/web/frontend/js/features/user-content-domain-access-check/index.ts @@ -21,7 +21,6 @@ const INITIAL_DELAY_MS = parseIntFromSplitTest( 'user-content-domain-access-check-delay', 30_000 ) -const DELAY_BETWEEN_PROBES_MS = 1_000 const TIMEOUT_MS = 30_000 const FULL_SIZE = 739 const FULL_HASH = @@ -43,9 +42,6 @@ const CHUNKS = [ hash: '8278914487a3a099c9af5aa22ed836d6587ca0beb7bf9a059fb0409667b3eb3d', }, ] -async function sleep(ms: number) { - return new Promise(resolve => setTimeout(resolve, ms)) -} function pickZone() { const x = Math.random() @@ -198,30 +194,36 @@ export async function checkUserContentDomainAccess() { } let failed = 0 + let ignoreResult = false const epochBeforeCheck = networkEpoch - for (const { url, init, estimatedSize, hash, chunks } of cases) { - await sleep(DELAY_BETWEEN_PROBES_MS) + await Promise.all( + cases.map(async ({ url, init, estimatedSize, hash, chunks }) => { + try { + await singleCheck(url, init, estimatedSize, hash, chunks) + } catch (err: any) { + if (!navigator.onLine || epochBeforeCheck !== networkEpoch) { + // It is very likely that the request failed because we are offline or + // the network connection changed just now. + ignoreResult = true + } + if (ignoreResult) return - try { - await singleCheck(url, init, estimatedSize, hash, chunks) - } catch (err: any) { - if (!navigator.onLine || epochBeforeCheck !== networkEpoch) { - // It is very likely that the request failed because we are offline or - // the network connection changed just now. - return false + failed++ + OError.tag(err, 'user-content-domain-access-check failed', { + url, + init, + }) + if ( + isSplitTestEnabled('report-user-content-domain-access-check-error') + ) { + captureException(err) + } else { + console.error(OError.getFullStack(err), OError.getFullInfo(err)) + } } - failed++ - OError.tag(err, 'user-content-domain-access-check failed', { - url, - init, - }) - if (isSplitTestEnabled('report-user-content-domain-access-check-error')) { - captureException(err) - } else { - console.error(OError.getFullStack(err), OError.getFullInfo(err)) - } - } - } + }) + ) + if (ignoreResult) return false try { await postJSON('/record-user-content-domain-access-check-result', {