#11991·temporal

在间隔溢出时,没有最大间隔的 ExponentialRetryPolicy 在 arm64 上返回了约 292 年的延迟时间

作者: harrisleesh创建于 2026年9月10日更新于 2026年9月10日

□到底想怎样?

使用退后. 新的责任追溯政策'(共同/退后/退后政策.go'中的退后'路径),且最大间隔被清除(NoInterval'),并依赖计算间隔过后停止的有记录的行为。

□ 描述错误

下一个Interval'被计算为活度64';用最大Interval = no Interval'和活度Interval'可以超过'MaxInt64'纳秒,而Go'将一个离地浮度64转换为'时间'。 期限`取决于平台:

  • amd64:将负数包成正数,被next Duration < p. firstInterval ' 检查并返回done'——匹配代码注释("如果下一次Interval溢出......”)。
  • arm64:饱和于 " MaxInt64 " ,因此 " NextBackOff " 返回 " 2562047h47m16.8s " (~292年),反射器实际上永远等待。

这与第11225号错误分类相同,该分类固定在共同/后退/重试.go'中的Expresent BackoffAlgorithm';retrier'/retrypolicy.go ' 路径从未收到过该修正。 但API允许它和行为在建筑上无声地分歧。

□ 最小复制

在arm64上,一个单元测试通过溢出点驾驶未封顶的保险单,预期done' (-1ns),并在main'上观察到2562047h47m16.85475807s' (706e0b4')。

□环境/趋势

  • 临时版本:主版(`706e0b4')
  • darwin/arm64(arm64上的臭虫清单;amd64不小心有文件记载)

我将提交一份公关,在计算的时间间隔达到 " MaxInt64 " 时明确返回 " done " ,使两个平台都遵循记录的意图;上限政策不受影响.

内容来源: temporalio/temporal