Problem
Two HTTP call sites lack timeouts and can hang indefinitely when a worker or remote sandbox server becomes unresponsive:
BaseTask.run_on_worker in rock/admin/scheduler/task_base.py is awaited without any timeout inside the scheduler's bounded-concurrency runner. A single stuck worker holds its semaphore slot forever, starving the scheduler.
RemoteSandboxRuntime._request in rock/sandbox/remote_sandbox.py issues requests.post without a timeout, so a hung server blocks the calling thread indefinitely.
Impact
Stuck workers/servers can wedge the admin scheduler and SDK callers, with no recovery until the process is restarted.
Expected
Both call sites should enforce a timeout and surface the failure instead of blocking forever.
Problem
Two HTTP call sites lack timeouts and can hang indefinitely when a worker or remote sandbox server becomes unresponsive:
BaseTask.run_on_workerinrock/admin/scheduler/task_base.pyis awaited without any timeout inside the scheduler's bounded-concurrency runner. A single stuck worker holds its semaphore slot forever, starving the scheduler.RemoteSandboxRuntime._requestinrock/sandbox/remote_sandbox.pyissuesrequests.postwithout atimeout, so a hung server blocks the calling thread indefinitely.Impact
Stuck workers/servers can wedge the admin scheduler and SDK callers, with no recovery until the process is restarted.
Expected
Both call sites should enforce a timeout and surface the failure instead of blocking forever.