fix(image): per-attempt wall-clock deadline on every fal call#183
Merged
Conversation
Live-caught during the self-play discovery pass: one fal edit call hung 12+ MINUTES with no error — and the SSE heartbeat (added to survive proxy body timeouts) faithfully kept the dead generation open forever. Endless shimmer, no banner, no recovery. _fal_subscribe (the one seam all fal calls ride — image, edit, continue, expand, inpaint) now wraps subscribe_async in asyncio.wait_for with FAL_CALL_TIMEOUT_S (default 240s, floor 30s — clears the slowest legitimate path, gpt-image-2 edits at ~170s; openrouter-hosted models don't ride this seam). A timeout is deliberately NOT retried: fail fast into the existing TimeoutError → friendly "took too long — hit retry" frame (#153) instead of stacking 3x the deadline.
|
Bugbot is not enabled for your account, so this pull request was not reviewed. Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Self-play discovery finding #5: a fal edit call hung 12+ minutes with no error while the SSE heartbeat kept the dead generation open forever — endless shimmer, no banner, no recovery path.
_fal_subscribe(the one seam every fal call rides) now wrapssubscribe_asyncinasyncio.wait_forwithFAL_CALL_TIMEOUT_S(default 240s, floor 30s — clears gpt-image-2's ~170s edits). A timeout is deliberately not retried: it fails fast into the existing TimeoutError → friendly "took too long — hit retry" frame (#153), already wired to the banner end-to-end.Suite + ruff + mypy green.
🤖 Generated with Claude Code