问题标签 [uber-cadence]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
150 浏览

cadence-workflow - 在实现 Uber Cadence 工作流程时,Java 客户端与 Go 客户端有哪些重大差异?

我正在设计一个工作流,目的是使用 cadence 工作流引擎和 Java 客户端。似乎 uber 正在积极使用 Go,因此 Go 比 Java Client 具有更好的文档和 Activity 和其他类。这是真的?

0 投票
1 回答
142 浏览

cadence-workflow - 引入版本控制后,Cadence 工作流不执行活动

我在 cadence 工作流中引入了 cadence 版本控制,之后工作流在版本控制引入点停止执行。我收到以下错误:

2020-10-29T07:23:49.587Z DEBUG internal/internal_event_handlers.go:465 ExecuteActivity {“Domain”:“domain_1”,“TaskList”:“tasklist_1”,“WorkerID”:“6@cdnc-5ddb9ccbb5-5dt5j@tasklist ”,“WorkflowType”:“do_work_workflow”,“WorkflowID”:“CREATE”,“RunID”:“cab97b65-9892-48c5-b842-3f8b462d8602”,“ActivityID”:“4”,“ActivityType”:“do_Task_D”} 2020-10-29T07:23:49.620Z DEBUG internal/internal_task_handlers.go:1077 缓存状态已过时,新任务有意外事件 {“Domain”:“domain_1”,“TaskList”:“tasklist_1”,“WorkerID”:“6 @cdnc-5ddb9ccbb5-5dt5j@tasklist1", "WorkflowID": "CREATE", "RunID": "cab97b65-9892-48c5-b842-3f8b462d8602”,“CachedPreviousStartedEventID”:30,“TaskFirstEventID”:22,“TaskStartedEventID”:30,“TaskPreviousStartedEventID”:21}

我的工作流程代码将如下所示:

在 ChangeID 处,返回的版本为 1,工作流尝试执行 TaskD,但它没有执行它,它陷入了无限循环,试图执行 TaskD。

我得到的错误信息是

缓存状态过时,新任务有意外事件

BadRequestError{消息:CadenceChangeVersion 不是有效的搜索属性}

你能帮我解决这个问题吗?

0 投票
1 回答
99 浏览

cadence-workflow - 使用命令行运行工作流时,如何使工作流运行无限长时间?

我正在使用命令行运行 Cadence 工作流程。我不希望我的工作流程超时(即,我希望它运行无限长的时间)。我该怎么做?

0 投票
1 回答
238 浏览

workflow - Uber Cadence 工作流程版本控制

Cadence 工作流程版本控制:

工作流 impl 具有以下代码:

工作流程 1 的开始:o/p -- version1: 1

工作流 impl 的变化:

工作流程 2 的开始:o/p -- version1: 2

工作流 impl 的变化:

工作流程 3 的开始:o/p -- version1: 3

重播工作流程 2 : o/p --version1: -1

重播工作流程 1 : o/p --version1: -1

我期待低于o / p

重播工作流程 2 : o/p -- version1: 2

重播工作流程 1 : o/p -- version1: 1

所以这意味着我们一次只能维护两个版本的工作流代码,

当前版本和所有旧版本 getVersion 将给出 Workflow.DEFAULT_VERSION

如果我错了,请纠正我!

0 投票
1 回答
471 浏览

cadence-workflow - 按客户跟踪正在进行的节奏工作流程

假设我们需要在用户完成购物车后生成订单

这是我们生成订单的步骤:

  • 生成挂起状态的订单(订单微服务)
  • 授权用户信用(记账微服务)
  • 将购物车的状态设置为关闭(购物车微服务)
  • 批准订单(订单微服务)

为此,我们只需创建一个节奏工作流,为每个步骤调用一个活动。

问题1:如果用户再次打开购物车或刷新页面,客户端如何检测到该购物车的订单创建正在进行中?(注意:假设我们的工作流还没有被worker执行)

我对问题 1 的解决方案:创建订单并将其状态更改为pending在运行工作流之前,因此对于下一个请求,客户知道订单处于待处理状态。但是如果订单创建成功,但启动工作流失败,会发生什么?它不是事务性的(订单创建和工作流程运行)

如果此解决方案也是您的解决方案并且您接受其风险,请告诉我。我是节奏的新手。

问题2:工作流程完成并准备好订单后如何通知客户?

请提供任何解决方案或文章或帮助?

0 投票
1 回答
582 浏览

cadence-workflow - 如何重新启动超时/失败/取消/终止的节奏工作流程

嗨,我有一个包含 2 个活动的工作流程。设想。一项活动在执行第二项时完成,我需要通信的 URL 链接已关闭。现在,当该 URL 启动时,工作流就会超时。那么如何重新启动超时工作流程?

这个问题的灵感来自Github issue

0 投票
1 回答
284 浏览

cadence-workflow - 为什么活动任务已计划但未启动?

通过查看历史,我安排了一个活动任务,但从未执行(开始),然后工作流超时。我可以确认 cadence worker 正在运行,因为其他工作流程同时工作正常。

为什么活动没有在历史记录中启动/执行?我应该如何调查这样的问题?

我的活动超时与工作流超时相同。

问题来自this Github issue

0 投票
1 回答
526 浏览

aws-step-functions - Solutions to fix stuck timers / activities in Cadence/SWF/StepFunctions

So timers are durable in workflow engines like Cadence, SWF and Step functions. Durable timer is useful for use cases that need to wait for a long period of time, then wake up to execute some business logic. Because of the durability, it’s resilient to various failures, making the programming experience and model much better for developers.

But what if you want to change a timer after it has started? Like this example:

After the timer started, you may want the timer to wait for 3 days instead, or even cancel it. What if you simply change the workflow code to this?

This does NOT work!

In SWF, Step Functions and Cadence, this will only work for new workflow executions that haven’t started the timer yet. But here you really want to fix is the workflows with “stuck” timers waiting for 7 days.

In SWF and Cadence, this is making things even worse -- the “stuck” workflows now become really stuck for “non deterministic errors”(aka NDE) until workflow timeouts. Because behind the scene, Cadence/SWF turns the durable time into a timer event in the workflow history, with the timer value. During replay, the workflow expects to see the timer existing with exactly the same timer value. Seeing a different timer value causes an NDE in workflows.

Also for activities, it can get stuck when we use a very large timeout, but it got stuck because there is a process/thread/RPC call get stuck, or during deployment the host got killed.

So what is the solution?

0 投票
1 回答
177 浏览

cadence-workflow - 如何根据某些过滤获取工作流列表,例如 timeout/workflowType

来自https://github.com/uber/cadence/issues/3820

人们希望获得基于某些过滤的工作流列表是命令。例如,获取要重置或任何操作的工作流列表。

0 投票
1 回答
1170 浏览

cadence-workflow - 如何为 Cadence 活动(本地和常规活动,有或没有重试)设置适当的超时值?

所以有这么多超时值:

对于本地活动

  • ScheduleToClose 超时

对于没有重试的常规活动

  • ScheduleToStart 超时
  • ScheduleToClose 超时
  • StartToClose 超时
  • 心跳超时

然后retryOptions中的更多值:

  • 过期间隔
  • 初始间隔
  • 退避系数
  • 最大间隔
  • 最大尝试次数

并且 retryOptions 可以应用于 localActivity 或常规活动。

我如何将它们与什么期望一起使用?