diff --git a/TODO.md b/TODO.md index 9224653..cb2b38d 100644 --- a/TODO.md +++ b/TODO.md @@ -30,6 +30,18 @@ P2: security: per-origin rate limiting # Completed Steps +- 2026-10-15 `max_concurrent_processing` defaults to half the CPUs pixa sees, + rounded down, and at least 1 (closes #242): it defaulted to one image per CPU, + and a container with no CPU limit sees every CPU of the host, so on a 48-CPU + host pixa processed 48 images at once, each of which can take about 4.2 GiB. + `config.DefaultMaxConcurrentProcessing` gives the default to the config and to + `imageprocessor.New`; `PIXA_MAX_CONCURRENT_PROCESSING` still overrides it. + "Running under upaas" in `README.md` gives the worst-case memory, measured, + and tells the operator to set `PIXA_MAX_CONCURRENT_PROCESSING` and + `PIXA_UPSTREAM_CONNECTIONS` to fit the container's memory. It also gives the + file libvips writes to `/tmp` for each large source, up to 1 GiB, measured, + which is outside `/var/lib/pixa` and `cache_max_bytes` and is memory where + `/tmp` is a tmpfs. - 2026-10-15 logging out ends every login session (closes #256): a login session was a cookie with nothing kept on the server, so `/logout` removed it from one browser and a copy of it kept working for its 30 days. Every login is made @@ -47,18 +59,6 @@ P2: security: per-origin rate limiting the cookie, as anyone can take a CSRF token from the login page. A logout that cannot be saved answers 500. `session.NewManager`, which the tests use, keeps the value in memory only; pixad uses `session.NewManagerWithDatabase`. -- 2026-10-15 `max_concurrent_processing` defaults to half the CPUs pixa sees, - rounded down, and at least 1 (closes #242): it defaulted to one image per CPU, - and a container with no CPU limit sees every CPU of the host, so on a 48-CPU - host pixa processed 48 images at once, each of which can take about 4.2 GiB. - `config.DefaultMaxConcurrentProcessing` gives the default to the config and to - `imageprocessor.New`; `PIXA_MAX_CONCURRENT_PROCESSING` still overrides it. - "Running under upaas" in `README.md` gives the worst-case memory, measured, - and tells the operator to set `PIXA_MAX_CONCURRENT_PROCESSING` and - `PIXA_UPSTREAM_CONNECTIONS` to fit the container's memory. It also gives the - file libvips writes to `/tmp` for each large source, up to 1 GiB, measured, - which is outside `/var/lib/pixa` and `cache_max_bytes` and is memory where - `/tmp` is a tmpfs. - 2026-10-15 a cached file left empty or partial is no longer served, or fetched again on every request (closes #252). Source and transformed image files, and each transformed image's `.meta` file, are synced to disk before they are