mirror of
https://github.com/penpot/penpot.git
synced 2026-10-29 14:00:37 +00:00
`update-file` deleted the file-summary cache key with a synchronous redis `DEL` on the request thread, inside the database transaction and holding the file lock. A slow redis added up to the 2s command timeout to every save, and any error other than a command timeout (a refused connection, for example) rolled the whole transaction back and lost the change batch. Hand the deletion to the worker executor with `px/exec`, keep nothing but the redis pool in the task, and swallow every failure there with a WARN that carries the file id. The save no longer waits for the cache and can not fail because of it; a lost invalidation only leaves a stale summary until its TTL expires. Closes #12495 AI-assisted-by: deepseek-v4.1-flash