From be9bbc234fd0ecd019460fbcd5dddb2635393028 Mon Sep 17 00:00:00 2001 From: Iain Sproat <68657+iainsproat@users.noreply.github.com> Date: Tue, 8 Apr 2025 14:51:53 +0100 Subject: [PATCH 1/2] Disable unnecessary chromium components --- packages/preview-frontend/src/main.ts | 1 + packages/preview-service/src/jobProcessor.ts | 10 ++++++---- packages/preview-service/src/main.ts | 11 ++++++++--- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/preview-frontend/src/main.ts b/packages/preview-frontend/src/main.ts index 46155c52e..ce3c8ec39 100644 --- a/packages/preview-frontend/src/main.ts +++ b/packages/preview-frontend/src/main.ts @@ -78,6 +78,7 @@ const takeScreenshot: TakeScreenshot = async () => { viewer.requestRender(UpdateFlags.RENDER_RESET) await waitForAnimation(10) ret.screenshots[i + ''] = await viewer.screenshot() + console.log(`Screenshot taken at ${i}`) } ret.durationSeconds = (Date.now() - t0) / 1000 return ret diff --git a/packages/preview-service/src/jobProcessor.ts b/packages/preview-service/src/jobProcessor.ts index 4b04315bd..859d65d13 100644 --- a/packages/preview-service/src/jobProcessor.ts +++ b/packages/preview-service/src/jobProcessor.ts @@ -85,13 +85,13 @@ const pageFunction = async ({ case 'debug': logger.debug(msg.text()) case 'error': - logger.error({ err: msg }, 'Page error') + logger.warn({ err: msg }, 'Page error') break case 'warn': - logger.warn({ err: msg }, msg.text()) + logger.info({ err: msg }, msg.text()) break default: - logger.info({ msg }, msg.text()) + logger.debug({ msg }, msg.text()) break } }) @@ -102,12 +102,13 @@ const pageFunction = async ({ // This code runs in the browser context and has no access to the outer scope // ==================== const start = new Date().getTime() - let loadDone = 0 + let loadDone = start let loadDurationSeconds = 0 try { await window.load(job) loadDone = new Date().getTime() loadDurationSeconds = (loadDone - start) / 1000 + console.log(`Loading completed in ${loadDurationSeconds} seconds`) } catch (e) { const loadErrored = new Date().getTime() const err = @@ -126,6 +127,7 @@ const pageFunction = async ({ try { const renderResult = await window.takeScreenshot() const renderDurationSeconds = (new Date().getTime() - loadDone) / 1000 + console.log(`Render completed in ${renderDurationSeconds} seconds`) return { ...renderResult, loadDurationSeconds, renderDurationSeconds } } catch (e) { const loadErrored = new Date().getTime() diff --git a/packages/preview-service/src/main.ts b/packages/preview-service/src/main.ts index c2f2e5c4b..e4e6b7ff3 100644 --- a/packages/preview-service/src/main.ts +++ b/packages/preview-service/src/main.ts @@ -86,6 +86,7 @@ const server = app.listen(port, host, async () => { '--no-sandbox', '--disable-setuid-sandbox', '--disable-dev-shm-usage', + '--disable-session-crashed-bubble', ...(GPU_ENABLED ? gpuWithVulkanArgs : []) ], protocolTimeout: PREVIEW_TIMEOUT @@ -96,9 +97,11 @@ const server = app.listen(port, host, async () => { // nothing after this line is getting called, this blocks await jobQueue.process(async (payload, done) => { let jobLogger = logger.child({ payloadId: payload.id }) + let browser: Browser | undefined = undefined + let encounteredError = false try { jobDoneCallback = done - const browser = await launchBrowser() + browser = await launchBrowser() const parseResult = jobPayload.safeParse(payload.data) if (!parseResult.success) { jobLogger.error( @@ -123,15 +126,17 @@ const server = app.listen(port, host, async () => { // with removeOnComplete, the job response potentially containing a large images, // is cleared from the response queue await resultsQueue.add(result, { removeOnComplete: true }) - await browser.close() - done() } catch (err) { jobLogger.error({ err }, 'Processing {jobId} failed') if (err instanceof Error) { + encounteredError = true done(err) } else { throw err } + } finally { + if (browser) await browser.close() + if (!encounteredError) done() } jobDoneCallback = undefined }) From 35c83d62a8abb0cc2222a9da2d4ef1cbd89238c9 Mon Sep 17 00:00:00 2001 From: Iain Sproat <68657+iainsproat@users.noreply.github.com> Date: Tue, 8 Apr 2025 15:13:40 +0100 Subject: [PATCH 2/2] Revert change already in another PR --- packages/preview-service/src/main.ts | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/packages/preview-service/src/main.ts b/packages/preview-service/src/main.ts index e4e6b7ff3..0ece6519e 100644 --- a/packages/preview-service/src/main.ts +++ b/packages/preview-service/src/main.ts @@ -97,11 +97,9 @@ const server = app.listen(port, host, async () => { // nothing after this line is getting called, this blocks await jobQueue.process(async (payload, done) => { let jobLogger = logger.child({ payloadId: payload.id }) - let browser: Browser | undefined = undefined - let encounteredError = false try { jobDoneCallback = done - browser = await launchBrowser() + const browser = await launchBrowser() const parseResult = jobPayload.safeParse(payload.data) if (!parseResult.success) { jobLogger.error( @@ -126,17 +124,15 @@ const server = app.listen(port, host, async () => { // with removeOnComplete, the job response potentially containing a large images, // is cleared from the response queue await resultsQueue.add(result, { removeOnComplete: true }) + await browser.close() + done() } catch (err) { jobLogger.error({ err }, 'Processing {jobId} failed') if (err instanceof Error) { - encounteredError = true done(err) } else { throw err } - } finally { - if (browser) await browser.close() - if (!encounteredError) done() } jobDoneCallback = undefined })