workflow-engine: step timeout over ~24.8 days (or Infinity) fires after 1ms

未关闭 适合新手
#5,970 1 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

@poojagosika 已经在做这个了。

开始于 2026年11月7日。

  • #5976 来自 @poojagosika —— 未关闭

评估

难度
2/5
预计耗时
1-3 小时
新手友好度
84/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
node.js, typescript
领域
backend, testing

调研方向

从 rivetkit-typescript/packages/workflow-engine/src/context.ts 中的 executeWithTimeout 开始,然后阅读 utils.ts 中的 setLongTimeout 辅助函数,以及 index.ts 如何使用它。添加超过 2^31-1 ms 的 timeout 和 Infinity 的测试;当长 timeout 不再立即触发,且 Infinity 会禁用 timeout 时,即为完成。

由索引模型根据 Issue 内容生成。

描述

executeWithTimeout in rivetkit-typescript/packages/workflow-engine/src/context.ts uses a plain setTimeout(reject, timeoutMs). Node can't wait longer than 2^31-1 ms (~24.8 days) that way: anything bigger, including Infinity, is clamped to 1ms with a TimeoutOverflowWarning.

So a step like this fails right away with StepTimeoutError, even though it would finish fine:

await ctx.step({
name: "long-job",
timeout: Infinity, // or 30 * 24 * 60 * 60 * 1000
run: async () => { ... },
});

Repro with the same logic as executeWithTimeout, running a 200ms step:

  • timeout 60_000 -> "done"
  • timeout 2_592_000_000 (30 days) -> StepTimeoutError after 3ms
  • timeout Infinity -> StepTimeoutError after 1ms

Since timeouts aren't retried by default, the step is marked exhausted and the workflow fails.

Expected: the step waits for the full timeout (and Infinity means no timeout).

Fix idea: use the setLongTimeout helper from utils.ts (already used for the scheduler wait in index.ts), and treat a non-finite timeout as disabled like 0. Happy to send a PR with tests.

主要语言
Rust
星标
6.6k
派生
304
平均合并
19 小时 50 分钟
30 天内合并 PR
28

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

rivet-dev/rivet 的其他 Issue

查看 rivet-dev/rivet 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。