mirror of
https://github.com/HeyPuter/puter.git
synced 2026-09-27 07:36:01 +00:00
fix: stop video generation timeouts and failures from paging (PUT-1620)
A video job that outlived its poll window, an SDK request that timed out, or a Veo operation that finished with an error all reached the HTTP error handler as plain Errors. Each became an unhandled 500 with critical severity and paged on-call for what is the provider's pace or the provider's fault. Video providers now share one poll loop that gives up with a 504 `upstream_timeout`, treats a transient poll failure (timeout, dropped connection, 408/429/5xx) as a missed poll rather than a failed job, and stops polling with a 400 `client_aborted` when the caller disconnects, so nothing is metered for a clip nobody will receive. The driver controller exposes the disconnect as an `abortSignal` on the request context. The window is ten minutes for every provider; Together and BytePlus move up from five. Failed jobs are classified: content-filter refusals become a 400 `bad_request` with `errorCode: moderation_flagged`, rejected parameters a 400 `upstream_bad_request`, and anything else a 502 `upstream_failed`, each carrying the provider's own code. Veo's filtered output keeps `disallowed_value` and gains the same `errorCode`. The sanitizer and content-filter pattern move from the Replicate provider into a shared util so image and video agree. Status-less SDK connection timeouts are translated to a 504 `upstream_timeout` at the driver boundary, and the chat driver records them per attempt so an all-timeout chain is a 504 and a mixed chain is `upstream_failed` instead of an `internal_error` 500. The Together chat client gets the same ten-minute request timeout as the other providers. The OpenAI video provider is left alone beyond an import path: its API is scheduled to shut down on 2026-09-24. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5.1
parent
3de6eeb474
commit
627a5b2d5e
@@ -61,6 +61,12 @@ export interface KnownContextFields {
|
||||
* `/drivers/call` dispatch); drivers read it to pick a provider.
|
||||
*/
|
||||
driverName: string;
|
||||
/**
|
||||
* Aborts when the client disconnects before the response has finished (set
|
||||
* by DriverController). Long-running drivers poll it so work nobody will
|
||||
* receive stops early and is never metered.
|
||||
*/
|
||||
abortSignal: AbortSignal;
|
||||
}
|
||||
|
||||
// -- Context store ---------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user