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:
- Define a post-processing function spooler_task_after()
- Code the switch with your requirements.
- Add the job to a job chain. Do this even you only have one job in the chain.
XML Configuration of the Job
<?xml version="1.0" encoding="ISO-8859-1"?>
<job order="yes"
stop_on_error="no">
<script language="shell">
<![CDATA[
exit 1
]]>
</script>
<monitor name="handleSetback"
ordering="0">
<script language="java:javascript">
<![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.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>

