mirror of
https://github.com/rehan-remade/universal-modder.git
synced 2026-11-05 01:37:40 +00:00
[PR #100] [MERGED] fix(fal): a failed output download names the request to fetch again #124
Labels
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
rehan-remade/universal-modder#124
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/rehan-remade/universal-modder/pull/100
Author: @AltDoug
Created: 10/5/2026
Status: ✅ Merged
Merged: 10/6/2026
Merged by: @rehan-remade
Base:
main← Head:fix/fal-download-keeps-request-id📝 Commits (2)
b20e03cfix(fal): a failed output download names the request to fetch again0048d8cMerge main into fix/fal-download-keeps-request-id📊 Changes
2 files changed (+38 additions, -4 deletions)
View changed files
📝
tests/test_um.py(+26 -0)📝
um/fal.py(+12 -4)📄 Description
If an output URL fails to download after a fal job completes,
download_outputsraises a bareHTTPErrortraceback. The manifest line is never written and the request id is never printed, so the finished (and paid) job is effectively lost. You can't callum fal resultwithout the id.I hit this with a BiRefNet video matte whose result was ~113 MB (ProRes 4444): the job completed, but its
v3b.fal.mediaURL returned 404 for good (retried for 5 minutes), while results up to ~99 MB from the same model downloaded fine. I haven't re-run that paid job for this PR, so treat the size link as an observation, not a confirmed rule. This PR only makes sure the job isn't lost when a download fails, whatever the cause:download_outputssaves every output it can, then stops with the failed URL(s), the error, andrequest <id>: try again later with um fal result <endpoint> <id>.run()stores_endpointnext to the_request_idit already stores, so that line is copy-pasteable.Tests: new
test_failed_download_keeps_the_request_id(fails before, passes after); full suite 59 passed on Windows 11, Python 3.12. By hand: a real 404 fromv3b.fal.mediathroughdownload_outputsnow printsFound and fixed with AI assistance (Claude Code); the repro and the fix were run by hand on Windows 11.
🤖 Generated with Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.