From 4c3bc19ca0c059ce2ee51422d3094b6af25f9290 Mon Sep 17 00:00:00 2001 From: clawbot <35+clawbot@noreply.example.org> Date: Thu, 15 Oct 2026 14:04:46 +0000 Subject: [PATCH] Put this PR's TODO.md entry back at the top of Completed Steps The rebase onto next placed it under the entry for the negative cache cleanup, as union merge keeps next's lines first. Model: opus-5-5 --- TODO.md | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/TODO.md b/TODO.md index 813b5ab..ec06a81 100644 --- a/TODO.md +++ b/TODO.md @@ -30,6 +30,24 @@ P2: security: per-origin rate limiting # Completed Steps +- 2026-10-15 a transcode stops once its request's `downstream_timeout` has + ended, unless it has begun encoding (closes #243): the image processor looked + at its context only while it waited for a processing slot, so an image was + decoded and encoded, holding the slot, however long after its request's + deadline that took. `Process` now returns the context's error, and gives the + slot back, when the context has ended by the time it has the slot or before it + encodes. A request that waited for a shared transcode stopped at the first + request's deadline is answered 503 `server busy, try again later`, not 500, + though its own `downstream_timeout` may not have ended. govips gives pixa no + way to stop libvips once an encode has begun, so that encode keeps its slot + until it finishes; the limit of 8192 on each side of the source and of the + output bounds how long that takes. With one libvips thread, 8192x8192 random + pixels take up to about 1 second to encode as JPEG, 15 as PNG, 16 as GIF, 63 + as WebP, 110 as AVIF and 96 as JPEG XL, the last three with an alpha channel, + plus up to about 11 seconds to decode the source; `README.md` gives these + times and no longer says the work stops when `downstream_timeout` ends. The + settings of the WebP, AVIF and JPEG XL encoders, which can hold a slot past + the default `downstream_timeout` of 60 seconds, are unchanged. - 2026-10-15 "Running under upaas" in `README.md` tells the operator to set `PIXA_CACHE_MAX_BYTES` (closes #251): it listed the variable as optional, but under upaas the volume is a directory on the host's filesystem. The default, @@ -57,24 +75,6 @@ P2: security: per-origin rate limiting expired. The goroutine runs with the disk cache disabled (`cache_max_bytes: 0`) too, where it does nothing else, as the negative cache is used either way. -- 2026-10-15 a transcode stops once its request's `downstream_timeout` has - ended, unless it has begun encoding (closes #243): the image processor looked - at its context only while it waited for a processing slot, so an image was - decoded and encoded, holding the slot, however long after its request's - deadline that took. `Process` now returns the context's error, and gives the - slot back, when the context has ended by the time it has the slot or before it - encodes. A request that waited for a shared transcode stopped at the first - request's deadline is answered 503 `server busy, try again later`, not 500, - though its own `downstream_timeout` may not have ended. govips gives pixa no - way to stop libvips once an encode has begun, so that encode keeps its slot - until it finishes; the limit of 8192 on each side of the source and of the - output bounds how long that takes. With one libvips thread, 8192x8192 random - pixels take up to about 1 second to encode as JPEG, 15 as PNG, 16 as GIF, 63 - as WebP, 110 as AVIF and 96 as JPEG XL, the last three with an alpha channel, - plus up to about 11 seconds to decode the source; `README.md` gives these - times and no longer says the work stops when `downstream_timeout` ends. The - settings of the WebP, AVIF and JPEG XL encoders, which can hold a slot past - the default `downstream_timeout` of 60 seconds, are unchanged. - 2026-10-15 a cached variant is served while its source URL is in the negative cache (closes #245): `Get` checked the negative cache before the variant cache, so once a fetch of the source failed, as one does when another variant