为什么需要executionStartToCloseTimeoutSeconds?

问题描述

使用Java客户端在Candece中启动工作流时,在工作流上需要“ executionStartToCloseTimeoutSeconds”。如果我的工作流可以运行不确定的时间,该如何解决这个限制?

解决方法

要求该值是一个错误。我正在使用的平台的新版本(temporal.io)将此值默认为无穷大。

,

不确定的时间 首先,我认为不确定的时间不是无限的时间。 Cadence工作流程中的反模式就是让工作流程执行无限地运行和增长。请参阅本文https://longquanzheng.github.io/cadence-lab/book/learnings/what-should-be-in-a-workflow-or-an-activity-in-cadence.html中的Recommendation #5 好的超时值可以保护您的工作流无限增长。

由于不建议让工作流永远运行,因为这会导致工作人员和服务器潜在的性能问题,所以最初的想法是强制客户端提供超时值。我们没有提供默认值,因为很难为所有用例都提供合理的默认值。

太小的默认值会更糟,因为没有人像工作流那样在生产中意外超时。即使您可以使用“重置”命令来重新打开它。

如Maxim所建议的,太大的默认值要比太小的值好一点。但是我个人不同意,因为这会导致客户忘记考虑工作流将运行多长时间以及工作流历史将增长多长时间。在以后的某些时候,这也将成为生产问题。

我看到的最大问题是此必需选项不友好。应该是编译错误而不是运行错误。我认为这可能是我们在Cadence中可以改进的-如果这是必填字段,请在编码经验上使其为必需。同时提供一些硬编码的假“无限”值,以帮助某些边缘情况也有意义。

回到您的问题,如果您认为不确定的不确定性,我建议使用一些假的无限值。 Cadence系统工作流程中的一个很好的例子:https://github.com/uber/cadence/blob/11547ee6db5dd306cb507b263381a6ea94c3faf1/service/worker/scanner/workflow.go#L48

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...