Retry-After 合约测试间歇性拒绝正确的定时器调度
作者: lalalune创建于 2026年9月17日更新于 2026年9月17日
在 `58cc489bb65e67db4cdb8cf70b6431d217599d72` 的剩余核心服务器通道出现 `src/utils/retry.backoff.test.ts:345` 失败: 两个请求的 30 毫秒重试延迟正确地报告为 `[30, 30]`,但 `Date.now()` 测量为 59 毫秒,而测试要求至少为 60。其他 13,313 个测试通过。`retryAsync` 选择有限的重试后值(受配置限制),并在尝试之间等待 `sleep(delay)`。墙时采样不是该调度协议的确定性断言。受影响的消费者是标准的核心 CI 网关,该网关会拒绝其他方面正确的重试调度。只需将此测试的墙时阈值替换为运行程序的受控定时器时钟,保留真实的 `retryAsync` 和 `sleep`。在每次尝试之前和在每个 30 毫秒界限处立即断言尝试次数,精确的 `[30, 30]` 回调,以及在第三次尝试后成功完成。在 `finally` 中恢复真实的时钟。生产中的定时、限制、重试或超时不会发生变化。仍然需要专注的执行和负面的调度控制;源代码准备不通过。
内容来源: elizaOS/eliza