Autosys - 如何从Box作业中间重新启动作业

时间:2016-03-09 14:34:54

标签: autosys

主Box作业中有5个作业,如此

MainBox
Job1 -> Job2 -> Job3 -> Job4 -> Job5

job2依赖于Job1,Job3依赖于Job2,依此类推。

依赖项是使用condition属性实现的。例如,Job2有condtion:success(Job1)。

在启动MainBox时,作业将按顺序运行。假设Job3失败了。现在,如何从失败的Job3中重新启动MainBox中的作业?

如果我手动强制启动Job3,那么它会运行,但是在Job3成功后,依赖的Job4才会启动。

3 个答案:

答案 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)。以下是您可以执行的步骤:

  1. 如果您的主盒仍处于RU状态,请强制停止主盒。
  2. ON_ICE你的工作1和工作2。
  3. 强行启动主框。
  4. 一旦框已经强制启动,您的job3将自动运行。
  5. 一旦你的job3已经转向SU,你的job4将立即运行。
  6. 一旦job4已经完成运行,你的主框应该转到SU,因为你的job1和job2处于ON_ICE状态,你的job3和job4处于SU状态。
  7. 您现在可以设置OFF_ICE作业job1和job2,以便在主框的下一个计划运行中,这些作业将被启动。
  8. 注意:job1和job2的开始和结束运行不应该更改。主框,job3和job4的开始和结束运行应该有更新的时间。