我正在运行一个包含三个子任务的合成任务。
组成的任务定义:
composed-task-runner --graph ='task1 && task2 && task3'
启动命令
任务启动my-composed-task --properties“ app.composed-task-runner.composed-task-arguments = arg1 = a.txt arg2 = test”
场景1: 当组合任务运行无误时,参数将传递给所有子任务。
方案2: 当第二个子任务失败并且重新启动作业时,组合的任务参数将传递给第二个子任务,而不传递给第三个子任务
方案3:
当第一个和第二个任务成功且第三个子任务失败时,并且如果作业重新启动,组成的任务参数现在将传递给第三个子任务。
观察: 任务失败并重新启动后,组合任务参数仅传递给失败的任务,而不传递给之后的任务。
作业重新启动后如何在组合任务中检索参数?这种行为的原因可能是什么?
使用的版本:
Spring Cloud本地服务器-1.7.3,Spring引导-2.0.4,Spring Cloud启动器任务-2.0.0
答案 0 :(得分:2)
您遇到的问题是SCDF没有存储启动时指定的属性。 此问题正在此处跟踪:https://github.com/spring-cloud/spring-cloud-dataflow/issues/2807,并计划在SCDF 2.0.0中修复。 [详情] 因此,当作业重新启动时,这些属性不会提交(因为它们当前未存储)到新的CTR启动中。 因此,后续任务(失败的任务成功之后)将没有为其设置属性。 失败的作业仍具有该值的原因是,参数存储在该步骤的批处理步骤执行上下文中。 [变通直到解决问题] 不用重新启动作业,而是使用属性(只要它们相同)启动CTR任务定义。