主Box作业中有5个作业,如此
MainBox
Job1 -> Job2 -> Job3 -> Job4 -> Job5
job2依赖于Job1,Job3依赖于Job2,依此类推。
依赖项是使用condition属性实现的。例如,Job2有condtion:success(Job1)。
在启动MainBox时,作业将按顺序运行。假设Job3失败了。现在,如何从失败的Job3中重新启动MainBox中的作业?
如果我手动强制启动Job3,那么它会运行,但是在Job3成功后,依赖的Job4才会启动。
答案 0 :(得分:0)
实际上在您提到的设置中,如果任何作业失败,如果条件为" box_terminator:y" ,则Box将失败,下游作业将进入非活动状态为工作设定。在这种情况下,您必须通过强制启动每个来手动完成下游,因为条件本身失败时条件将不起作用。
为了实现您在工作中需要做一些调整,需要" box_terminator:n" 。然后在任何工作失败时,Box将保持运行状态,下游工作将保持激活状态,等待失败的工作成功。您可以将失败的作业标记为成功跳过其运行或强制开始完成,因为该框仍处于运行状态,依赖关系将适用于其中的每个作业。
但请务必在Box中加入" trem_runtime: value_in_minutes " ,以便该框失败后如果失败的工作是无人值守的,那么时间框将无限期地运行。
我认为应该这样做。
答案 1 :(得分:0)
我们可以通过以下步骤达到您的要求。它是一种替代方法,
步骤1:将ON_HOLD job1和job2成功运行并完成。 步骤2:如果盒子作业处于运行状态,则终止它。 第3步:启动框工作。 步骤4:将job1和job2从ON_HOLD状态标记为成功状态。 步骤5:检查Box作业的状态,您可以看到作业序列从job3开始运行。
此致 Kaliraja。
答案 2 :(得分:0)
为了能够在不影响成功作业的情况下重新启动失败的作业,并使剩余的ACTIVE / INACTIVE作业自动运行(因为它取决于失败的作业),您需要使用autosys的ON_ICE功能。 ON_ICE就像一个SUCCESS状态。如果您的工作是ON_ICE,Autosys会将其读作SUCCESS,并且不会再次触发。因此,由于您对job3的依赖关系是job2的SU,因此一旦您强制启动主BOX,您的job3将自动运行(考虑到它们已处于ON_ICE状态,跳过运行job1和job2)。以下是您可以执行的步骤:
注意:job1和job2的开始和结束运行不应该更改。主框,job3和job4的开始和结束运行应该有更新的时间。