fix!: add sharp timeout of 10 seconds (#65517)

This PR [configures
sharp](https://sharp.pixelplumbing.com/api-output#timeout) with a
timeout of 10 seconds when optimizing an image.

Anything longer will throw an error which we will catch and [fallback to
serving the unoptimized source
image](c942006d83/packages/next/src/server/image-optimizer.ts (L637)).



Closes NEXT-3359
This commit is contained in:
Steven 2024-05-08 13:36:11 -04:00 committed by GitHub
parent b4130cb07a
commit 78507bcf69
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -437,14 +437,10 @@ export async function optimizeImage({
height?: number
nextConfigOutput?: 'standalone' | 'export'
}): Promise<Buffer> {
let optimizedBuffer = buffer
const sharp = getSharp()
const transformer = sharp(buffer, {
sequentialRead: true,
})
transformer.rotate()
const transformer = sharp(buffer, { sequentialRead: true })
.timeout({ seconds: 10 })
.rotate()
if (height) {
transformer.resize(width, height)
@ -468,7 +464,7 @@ export async function optimizeImage({
transformer.jpeg({ quality, progressive: true })
}
optimizedBuffer = await transformer.toBuffer()
const optimizedBuffer = await transformer.toBuffer()
return optimizedBuffer
}