peter
815083bcc4
fix(files): review round 1, the server — the tray's window, the GC's locks, a file's origin, the upgrade path
...
- The queue keeps a done job by when it became done (ready_at), not by its last write: renaming,
keeping or moving an old file, or the GC's expiry warning, no longer brings it back as just finished.
- GC expiry and eviction re-read each file under the asset→job locks the user routes take, and commit
one file at a time: a delete, a re-download or a keep made while the GC runs is honoured, never a
second release that frees a file another user still holds.
- A file records the origin it was placed under (download_jobs.source_key, migration 0105): an edit
whose parent expired still goes back to its folder, not to Uploads.
- A folder a file is being put in is held (FOR SHARE) until it lands; a delete of it waits and takes
that file home too, instead of failing on the foreign key.
- The hash route reads at most two files at once (429 past that) and holds no connection meanwhile.
- 0104's backfill dates old files by their request date only: no notice prod wrote names its job.
- The old DOWNLOAD_ROOT still finds the files; a files root that is not a mounted volume stops the
worker and is logged by the API; the volume-copy recipe looks the project-prefixed names up.
- Stale comments about the /downloads mount and the Downloads page.
2026-10-13 00:14:09 +02:00
..
2026-10-05 00:19:39 +02:00
2026-10-13 00:14:09 +02:00
2026-09-29 22:39:57 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-03 23:18:26 +02:00
2026-10-08 22:12:43 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 20:51:39 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 16:56:13 +02:00
2026-10-11 16:56:13 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-11 19:37:13 +02:00
2026-10-03 23:18:26 +02:00
2026-10-05 00:19:39 +02:00
2026-09-29 22:39:57 +02:00
2026-10-03 03:29:54 +02:00
2026-10-05 00:19:39 +02:00
2026-10-11 19:37:13 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-09-26 18:46:24 +02:00
2026-09-11 01:38:31 +02:00
2026-09-13 00:17:09 +02:00
2026-10-03 16:34:20 +02:00
2026-09-26 21:45:46 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-03 03:29:54 +02:00
2026-10-05 00:19:39 +02:00
2026-09-21 23:32:22 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-03 23:18:26 +02:00
2026-09-17 02:59:09 +02:00
2026-10-08 22:12:43 +02:00
2026-10-05 00:19:39 +02:00
2026-10-08 22:12:43 +02:00
2026-10-05 00:19:39 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 19:37:13 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-03 16:38:46 +02:00
2026-10-02 00:07:00 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-09-17 02:59:09 +02:00
2026-09-27 01:33:37 +02:00
2026-10-11 05:34:25 +02:00
2026-10-05 00:19:39 +02:00
2026-10-03 23:18:26 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-09-27 15:08:27 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-11 19:37:13 +02:00
2026-10-12 20:06:30 +02:00
2026-10-05 00:19:38 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 16:56:13 +02:00
2026-10-11 16:56:13 +02:00
2026-10-12 20:54:47 +02:00
2026-10-12 20:54:47 +02:00
2026-10-12 15:28:31 +02:00
2026-10-12 15:28:31 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 19:37:13 +02:00
2026-10-05 00:19:39 +02:00
2026-09-19 05:47:17 +02:00
2026-10-06 03:19:33 +02:00
2026-09-27 01:33:37 +02:00
2026-10-05 00:19:39 +02:00
2026-09-26 00:39:01 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-09 23:46:39 +02:00
2026-10-09 23:46:39 +02:00
2026-10-09 23:46:39 +02:00
2026-10-09 23:46:39 +02:00
2026-10-05 00:19:39 +02:00
2026-09-17 02:59:09 +02:00
2026-10-01 22:51:38 +02:00
2026-09-17 02:59:09 +02:00
2026-10-05 00:19:38 +02:00
2026-10-05 00:19:38 +02:00
2026-09-17 02:59:09 +02:00
2026-09-17 02:59:09 +02:00
2026-09-17 02:59:09 +02:00
2026-10-11 15:59:12 +02:00
2026-10-12 15:28:31 +02:00
2026-10-11 05:34:25 +02:00
2026-10-12 15:28:31 +02:00
2026-10-12 15:28:31 +02:00
2026-10-12 22:19:37 +02:00
2026-10-12 22:19:37 +02:00
2026-10-11 15:59:12 +02:00
2026-10-11 15:59:12 +02:00
2026-10-11 15:59:12 +02:00
2026-10-11 15:59:12 +02:00
2026-10-11 15:59:12 +02:00
2026-09-05 16:58:29 +02:00
2026-10-05 00:19:38 +02:00
2026-10-05 00:19:38 +02:00
2026-10-11 05:34:25 +02:00
2026-10-09 00:06:18 +02:00
2026-10-05 00:19:39 +02:00
2026-10-09 00:06:18 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-11 05:34:25 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 16:56:13 +02:00
2026-10-11 19:37:13 +02:00
2026-09-26 20:01:04 +02:00
2026-09-19 22:26:49 +02:00
2026-10-09 00:44:46 +02:00
2026-09-27 02:12:54 +02:00
2026-10-05 00:19:38 +02:00
2026-10-11 19:37:13 +02:00
2026-10-05 00:19:39 +02:00
2026-09-24 23:48:22 +02:00
2026-10-11 19:37:13 +02:00
2026-09-19 17:07:11 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 16:56:13 +02:00
2026-10-11 16:56:13 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:38 +02:00
2026-10-08 02:52:32 +02:00
2026-10-05 00:19:39 +02:00
2026-10-03 23:18:26 +02:00
2026-10-10 15:35:21 +02:00
2026-10-10 21:56:47 +02:00
2026-10-09 00:27:29 +02:00
2026-10-05 00:19:39 +02:00
2026-10-08 22:12:43 +02:00
2026-09-19 17:58:40 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-09-17 02:59:09 +02:00
2026-10-05 00:19:39 +02:00
2026-08-20 05:40:59 +02:00
2026-09-17 02:59:09 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-09 23:46:39 +02:00
2026-10-09 23:46:39 +02:00
2026-09-29 22:39:57 +02:00
2026-10-09 22:01:28 +02:00
2026-10-09 01:22:00 +02:00
2026-10-09 01:22:00 +02:00
2026-10-09 22:01:28 +02:00
2026-10-08 22:12:43 +02:00
2026-10-05 00:50:36 +02:00
2026-10-05 00:19:39 +02:00
2026-10-09 00:06:18 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-09 23:46:39 +02:00
2026-10-09 23:46:39 +02:00
2026-10-09 23:46:39 +02:00
2026-10-09 23:46:39 +02:00
2026-08-23 18:39:22 +02:00
2026-10-02 23:42:32 +02:00
2026-10-09 22:01:28 +02:00
2026-10-08 03:09:55 +02:00
2026-10-05 00:19:39 +02:00
2026-09-17 02:59:09 +02:00
2026-10-05 00:19:39 +02:00
2026-10-10 15:35:21 +02:00
2026-10-05 00:19:39 +02:00
2026-10-07 23:16:38 +02:00
2026-10-09 22:01:28 +02:00
2026-09-14 23:58:30 +02:00
2026-10-08 02:50:51 +02:00
2026-10-10 22:56:09 +02:00
2026-10-10 03:58:27 +02:00
2026-10-05 00:19:39 +02:00
2026-10-10 21:56:47 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-08 21:18:48 +02:00
2026-10-08 21:18:48 +02:00
2026-09-15 00:53:15 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-09-17 02:59:09 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-09 01:22:00 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-06 22:31:48 +02:00
2026-10-08 21:18:48 +02:00
2026-10-08 21:18:48 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-09-17 02:59:09 +02:00
2026-09-17 02:59:09 +02:00
2026-10-09 01:22:00 +02:00
2026-10-09 01:22:00 +02:00
2026-09-17 02:59:09 +02:00
2026-09-17 02:59:09 +02:00
2026-10-05 00:19:39 +02:00
2026-09-25 00:47:46 +02:00
2026-10-03 16:34:20 +02:00
2026-09-25 00:47:46 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 19:37:13 +02:00
2026-09-27 01:33:37 +02:00
2026-09-17 02:59:09 +02:00
2026-10-05 00:19:39 +02:00
2026-10-03 23:18:26 +02:00
2026-10-05 00:19:39 +02:00
2026-10-04 00:05:37 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 20:51:39 +02:00
2026-10-08 02:59:13 +02:00
2026-10-05 00:19:39 +02:00
2026-10-08 02:52:32 +02:00
2026-09-25 01:40:45 +02:00
2026-10-05 00:19:38 +02:00
2026-10-05 00:19:39 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 19:37:13 +02:00
2026-10-04 00:05:37 +02:00
2026-09-19 17:23:55 +02:00
2026-10-05 03:16:13 +02:00
2026-10-05 00:19:38 +02:00
2026-10-05 00:19:38 +02:00
2026-10-03 23:18:26 +02:00
2026-10-05 00:19:39 +02:00
2026-09-22 00:22:30 +02:00
2026-10-04 02:29:03 +02:00
2026-10-05 00:19:39 +02:00
2026-10-11 19:37:13 +02:00
2026-10-11 19:37:13 +02:00
2026-10-08 01:16:30 +02:00
2026-10-10 21:56:47 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-11 05:34:25 +02:00
2026-10-12 15:28:31 +02:00
2026-10-11 15:59:12 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-09 22:01:28 +02:00
2026-10-09 22:01:28 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-09 22:01:28 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-09-27 17:47:01 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-09 00:44:46 +02:00
2026-10-09 00:44:46 +02:00
2026-09-05 16:58:29 +02:00
2026-09-05 16:58:29 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-09 00:44:46 +02:00
2026-10-10 21:29:55 +02:00
2026-10-11 05:34:25 +02:00
2026-09-26 01:23:44 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-10-05 00:19:39 +02:00
2026-09-26 01:23:44 +02:00
2026-10-05 00:19:39 +02:00
2026-10-09 00:44:46 +02:00
2026-10-06 23:55:41 +02:00
2026-10-06 23:55:41 +02:00
2026-10-06 03:19:32 +02:00
2026-10-06 03:19:32 +02:00
2026-10-11 19:37:13 +02:00
2026-09-17 02:59:09 +02:00
2026-10-05 00:19:39 +02:00
2026-09-17 02:59:09 +02:00
2026-09-17 02:59:09 +02:00
2026-10-05 00:19:38 +02:00
2026-10-11 05:34:25 +02:00
2026-10-05 00:19:39 +02:00