mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-11-12 23:31:02 +00:00
fb2429ebb2
Domains whose rows name stored objects register a reference source with StorageReclaimRegistryService; storage never imports them. A ledger in storage decides per category whether it is reclaimed at all and which sources must have answered first, and a category whose resolved location overlaps another one is left alone. A nightly pass at 04:05 lists the root level of files, journey, covers, avatars and places, skips objects younger than a day or without a modification time, asks every source in pages of 500 and marks the rest. Only with deletion switched on, and only for marks a week old, it asks every source about the single key again and deletes through StorageService. A category is skipped and its marks start over when a source is missing or fails, the listing fails, or more than a fifth of its objects look unreferenced. A pass shares the one-job slot with backfills and migrations, never runs on a demo instance and stops when the database is reopened. Admins switch deletion and run a pass on demand under /api/admin/storage/reclaim; both are audited, and GET /api/admin/storage carries the switch and the last report. Deletion is off after install and upgrade.