【问题标题】:Unknown DecisionId [type=ACTIVITY, id=26], AWS SWF Decision error未知的 DecisionId [type=ACTIVITY, id=26],AWS SWF 决策错误
【发布时间】:2017-09-22 13:46:13
【问题描述】:

我间歇性地遇到这个问题,两周一次。正如我所观察到的,每次发生此问题时,都是由于活动 ID 26。我看到活动 ID 26 已成功完成。不确定为什么决策任务因成功完成的活动而失败。

“事件时间戳”:1500668941.164,
"eventType": "WorkflowExecutionFailed",
“eventId”:866,“workflowExecutionFailedEventAttributes”:

“详情”:
"java.lang.IllegalArgumentException: Unknown DecisionId [type=ACTIVITY, id=26]。
可能的原因是工作流定义中的non-deterministic workflow definition 代码或incompatible change

在:com.amazonaws.services.simpleworkflow.flow.worker.DecisionsHelper.getDecision(DecisionsHelper.java:613)
com.amazonaws.services.simpleworkflow.flow.worker.DecisionsHelper.handleActivityTaskScheduled(DecisionsHelper.java:171)
在: com.amazonaws.services.simpleworkflow.flow.worker.AsyncDecider.processEvent(AsyncDecider.java:267) com.amazonaws.services.simpleworkflow.flow.worker.AsyncDecider.decide(AsyncDecider.java:515)
在: com.amazonaws.services.simpleworkflow.flow.worker.AsyncDecisionTaskHandler.handleDecisionTask(AsyncDecisionTaskHandler.java:50)
在 com.amazonaws.services.simpleworkflow.flow.worker.DecisionTaskPoller.pollAndProcessSingleTask(DecisionTaskPoller.java:201)
在 com.amazonaws.services.simpleworkflow.flow.worker.GenericWorker$PollServiceTask.run(GenericWorker.java:94)

java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
在 java.lang.Thread.run(Thread.java:745)",

“decisionTaskCompletedEventId”:865,
“原因”:“Unknown DecisionId [type=ACTIVITY, id=26]。
可能的原因是non-deterministic workflow definition 代码或工作流定义中的不兼容更改。"

任何帮助将不胜感激。

【问题讨论】:

    标签: amazon-web-services amazon-swf


    【解决方案1】:

    AWS Flow Framework 使用重播来重建工作流程状态。它要求工作流代码是确定性的。 IE。回放历史时,它会完全进入相同的状态。有多种方法可以打破决定论。最常见的是在某些工作流正在运行或使用系统时间而不是框架提供的时钟对象时更改工作流代码(或配置)。 您是否进行过任何时间计算或您最近更改过工作流代码?

    请参阅Making Changes to Decider Code: Versioning and Feature Flags,了解在不中断正在运行的工作流的情况下更新工作流代码的各种方法。

    【讨论】:

    • 我们没有任何时间计算。每次我们添加新功能时,工作流程代码都会发生变化。但是,发行当天没有代码更改。
    • 更改不需要在发布当天。如果您在未采取特殊措施的情况下在有开放工作流的情况下部署更改,那么重放将在未来的某个时候中断。
    • 感谢您的信息。有哪些特殊措施需要注意?
    • 添加了对决策者代码文档进行更改的链接
    猜你喜欢
    • 2014-05-08
    • 2016-11-25
    • 2018-04-29
    • 2016-05-16
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 2016-07-12
    • 2016-12-08
    相关资源
    最近更新 更多