You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Setback intervals based on exit codes

If you want to set different setback intervals depending on the exit code then you can use the internal API by defining a post-processing routine after the task.

In this example, we define a job in a job chain.

  • When the job ends with exit code 1 then try again in 60 seconds
  • When the job ends with exit code 444 then try again in 2 hours
  • When the job ends with other non-zero exit codes then try again in 300 seconds

Perform the following tasks with JOE:

  1. Define a post-processing function spooler_task_after()
  2. Code the switch with your requirements.
  3. Add the job to a job chain. Do this even you only have one job in the chain.

 


XML Configuration of the Job

 <job order="yes">
    <script language="shell"><![CDATA[
        exit 0
    ]]></script>
    <monitor name="handleSetback" ordering="0">
        <script language="javax.script:ecmascript"><![CDATA[
function spooler_task_after() {
  var exit = spooler_task.exit_code();
  var job = spooler_task.job();
 
  // After one setback, handle this as an error.
  job.set_max_order_setbacks( 1 );
 
  switch ( exit ) {
    case 0:  // proceed
      return true;
    case 1:  // Restart after 60 seconds
      job.set_delay_order_after_setback( 1, "60" );
      break;
    case 4444: // Restart after 2 hours
      job.set_delay_order_after_setback( 1, "02:00:00" );
      break;
    default: // Restart after 300 seconds
      job.set_delay_order_after_setback( 1, "300" );
      break;
  }
}
      ]]></script>
    </monitor>
  <run_time/>
</job>

XML configuration of the Job Chain

 <job_chain>
    <job_chain_node state="100"
                    job="job1"
                    next_state="success"
                    error_state="error"
                    on_error="setback"/>
    <job_chain_node state="success"/>
    <job_chain_node state="error"/>
 </job_chain>

See also

 

  • No labels