mirror of
https://github.com/penpot/penpot.git
synced 2026-09-24 04:46:14 +00:00
Binfile import ran the whole import in a single transaction with idle_in_transaction_session_timeout disabled (= 0), so a stalled import could retain a connection pool slot indefinitely. Set a finite 20 minutes ceiling via SET LOCAL instead (a compile-time constant interpolated into the SQL; PostgreSQL does not accept bind parameters on SET). The v3 importer also located each file data by rescanning the full zip entry collection once per manifest file and once per page, making the cost close to quadratic on large files. Replace the per-file regex matchers with a single classification pass that groups entries by their raw path shape; consumers now lookup their entries per file and page. As a deliberate tightening, the .json suffix is matched literally: the previous regexes left the dot unescaped, so crafted paths like files/<f>/tokensXjson or objects/x-json matched by accident and are now ignored. Closes #11579 AI-assisted-by: omen-alpha