You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
ActorClient.call and TaskClient.call apply timeout only to the start request #1171
ActorClient.call(timeout=...) passes timeout to start (actor.py#L394-L407) and then calls run_client.wait_for_finish(wait_duration=wait_duration) without it (#L416-L417, #L428-L429). wait_for_finish defaults to timeout='no_timeout' (run.py#L140-L145), so every poll runs without a timeout. TaskClient.call does the same (task.py#L349-L369), and so do both async variants (actor.py#L954-L990, task.py#L757-L776). The docstring says only "Timeout for the API HTTP request".
A caller who passes timeout=timedelta(seconds=90) to guard against a stuck connection gets that guard on the start request only. If a poll connection hangs (a half-open TCP connection, a proxy that never answers), call() hangs with it. The server holds each poll for at most about 60 seconds, so a 90 s timeout would never cut off a healthy poll.
The JS client passes timeoutSecs to both start and waitForFinish (actor.ts#L313-L331, task.ts#L256-L267) and documents it as "Timeout for each API request, the start and every poll alike".
Expected behavior
call() forwards timeout to wait_for_finish in all four variants, and the docstring says it applies to the start request and to every poll.
Activity