mirror of
https://github.com/yusufipk/OpenFrame.git
synced 2026-09-11 09:36:08 +00:00
Two problems with running these unattended, both found while wiring the Bunny cleanup up to a Coolify scheduled task against production. A dry run reported a count and nothing else. "Orphaned: 31" is not something anyone can approve: it says how many objects would go, never which. Both scripts now list every orphan they would delete, and print the same list when deleting, so a real run is auditable afterwards too. Each line carries who the object belongs to, as far as each provider can answer: - R2 reads the owner out of `videoUploadSession`, which keeps `objectKey` alongside the initiating and billed user and survives an upload that never became a video. That is the case producing orphans, so this is an answer rather than a guess. - Bunny has no equivalent. `bunny-init` sends the provider a title and nothing else, and an orphan by definition has no row pointing at it, so there is nothing authoritative to look up. The title is matched against titles still in the database instead, which catches the common shape (a version upload that failed and was retried successfully leaves a live row with the same title). A hit prints as "possibly", because it is a hint. The grace periods were also too short to be safe: - Bunny counted a video abandoned after 24 hours. - R2 counted an object abandoned after 15 minutes, which is shorter than a slow multipart upload of a large file. An object still being written, or written but not yet finalised into a row, looked abandoned and could be deleted out from under the upload creating it. Both are seven days now: long enough that no upload, retry or delayed finalisation can still be in flight.