未知DecisionId [type = ACTIVITY,id = 26],AWS SWF决策错误

时间:2017-09-22 13:46:14

标签: amazon-web-services amazon-swf

我在2周内间歇性地面对这个问题。正如我所观察到的,每次出现此问题时,都是由于活动ID 26所致。我看到活动ID 26已成功完成。不确定为什么决策任务失败并且成功完成的活动。

  

“eventTimestamp”:1500668941.164,
  “eventType”:“WorkflowExecutionFailed”,
  “eventId”:866,“workflowExecutionFailedEventAttributes”:

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

     

at: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,
  “reason”:“Unknown DecisionId [type = ACTIVITY,id = 26]。
  可能的原因是non-deterministic workflow definition代码或工作流定义中的不兼容更改。“

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

有关更新工作流程代码的各种方法,请参阅Making Changes to Decider Code: Versioning and Feature Flags,而不会破坏正在运行的工作流程。