Skip to content

[Bug]: 出帧台只等 19.6 秒就静默放弃,服务端却等 900 秒 #889

Description

@johnnyzhang-eng

现象

浏览器侧 attachClientBake 的等待窗口是硬编码的:

const RETRY_DELAYS_MS = [800, 1600, 3200, 6000, 8000]

五次退避合计 19.6 秒,之后 return false。而服务端的 deadline 是:

DEADLINE_S = float(os.getenv("WINDUP_RENDER3D_CLIENT_BAKE_DEADLINE_S", "900"))

900 秒。两个数字差 46 倍。

后果

action worker 挂出 spec 之前如果队列堵了超过 20 秒,浏览器已经放弃了,而任务还要在 RUNNING 上傻等到 900 秒才判 浏览器出帧超时。用户看到的是一次没有任何解释的失败,中间那 880 秒什么都没发生。

放弃还是静默的:

void runClientBake(taskId).catch((cause) => onAsyncError(asError(cause)))

返回 false 不走 catch,所以「没挂上」这件事一个字都不会报。

缓解与不足

重开工作流页会走 resume()watchGeneration → 重新 runClientBake,所以能接回来——但要靠用户碰巧刷新,且仍在 900 秒之内。

建议

窗口对齐服务端 deadline(由 spec 里的 deadline_at 推,而不是各写各的常量),并在放弃时报一次可见错误。

复现

2026-08-28 task 761 验证 ④ 全链路时,用探针把窗口放长才等到 spec;按 19.6 秒的窗口第一次是等不到的。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions