Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents
outlinh1. true
outlinh1. true
1printablefalse
2stylh1. none
3indent20px

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.

...

  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

Code Block
languagexml
 <job order="yes" stop_on_error="no">
    <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

Code Block
 <job_chain orders_recoverable="yes"
           visible="yes"
           name="job_chain1">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