【问题标题】:sos berlin scheduler -- job chain - how to trigger other job after job timeoutsos berlin scheduler - 作业链 - 作业超时后如何触发其他作业
【发布时间】:2018-09-20 22:57:22
【问题描述】:

我正在使用 sos berlin 调度程序(版本 linux-x64 1.10.5)。

通常当 job_chain 中的作业超时时,调度程序会终止作业进程并发送电子邮件。 所以,基于此,我想触发其他工作。 但是,我尝试了两种方法都不起作用。

方式 1:

在作业中添加一个函数“spooler_task_after()”。

我猜失败是因为这个job会在linux系统上创建一个进程,而job timeout scheduler会杀掉这个job进程,也会杀掉函数“spooler_task_after()”

代码:

<job timeout="00:00:09">
    <script language="shell"><![CDATA[

    echo aa
    sleep 10s
    echo bb

    ]]></script>
    <monitor name="exit_code" ordering="0">
    <script language="java:javascript"><![CDATA[

    function spooler_task_after(){
       var exitCode = spooler_task.exit_code;
       spooler_log.info ("Exit Code is: " + exitCode);

       /*
        call other job
       */

       result = true;
      return result;
    }

            ]]></script>
    </monitor>
    <run_time/>
</job>

结果:

2017-07-27 21:22:21.251+0800 [info]   
2017-07-27 21:22:21.251+0800 [info]   Task sample_errorhandling/job1:23026 - Protocol starts in /httx/opt/sos-scheduler/ldw-scheduler-test1/logs/task.sample_errorhandling,job1.log
2017-07-27 21:22:21.250+0800 [info]   SCHEDULER-842  Task is going to process Order sample_errorhandling/job_chain3:12, state=aaa, on JobScheduler 'http://xxxx:4444', Order's Process_class
2017-07-27 21:22:21.268+0800 [info]   SCHEDULER-726  Task runs on this JobScheduler 'http://jt-host-kvm-72:4444'
2017-07-27 21:22:21.268+0800 [info]   SCHEDULER-918  state=starting (at=never)
2017-07-27 21:22:22.466+0800 [info]   SCHEDULER-987  Starting process: '/bin/sh' '-c' '"/tmp/admin/sos.gBdCm8"'
2017-07-27 21:22:23.520+0800 [info]   [stdout] aa
2017-07-27 21:22:30.326+0800 [ERROR]  SCHEDULER-272  Terminating task after reaching deadline <job timeout="9">
2017-07-27 21:22:30.359+0800 [ERROR]  SCHEDULER-202  Connection to task has been lost, state=running_remote_process: Z-REMOTE-101  Separate process: pid=0: Connection lost / zschimmer::com::object_server::Connection::pop_operation
2017-07-27 21:22:30.359+0800 [ERROR]  SCHEDULER-202  Connection to task has been lost, state=release: Z-REMOTE-122  Separate process pid=0: Caller has killed process
2017-07-27 21:22:30.384+0800 [ERROR]  SCHEDULER-280  Process terminated with exit code 1 (0x63)
2017-07-27 21:22:30.384+0800 [WARN]   SCHEDULER-845  Task ended without processing the order. The order remains in job's order queue in the same state
2017-07-27 21:22:30.384+0800 [info]   SCHEDULER-843  Task has ended processing of Order sample_errorhandling/job_chain3:12, state=aaa, on JobScheduler 'http:/xxxx:4444'

方式 2:

在作业链节点上添加返回码

这种方式适用于作业执行成功或错误。但是当作业因超时而被终止时失败。

工作链中的代码:

<job_chain >
    <job_chain_node  state="aaa" job="job1" next_state="success" error_state="error">
        <on_return_codes >
            <on_return_code  return_code="1">
                <add_order  xmlns="https://jobscheduler-plugins.sos-berlin.com/NodeOrderPlugin" job_chain="/error_handling/sendmail"/>
            </on_return_code>
        </on_return_codes>
    </job_chain_node>

    <job_chain_node  state="success"/>

    <job_chain_node  state="error"/>
</job_chain>

【问题讨论】:

    标签: timeout scheduled-tasks kill job-scheduling


    【解决方案1】:

    您可以使用 error_state= 属性。 当 JobScheduler 由于超时而终止任务时,这将被视为错误情况。

    请注意errorHandling状态的next_state是error,在JOC中表示这是一个错误,并且errorHandling状态有自己的error_state来表示errorHandler本身是否失败。

     <job_chain>
         <job_chain_node  state="100" job="job1" next_state="200" error_state="errorHandling"/>
         <job_chain_node  state="200" job="job2" next_state="success" error_state="errorHandling"/>
         <job_chain_node  state="errorHandling" job="errorHandlerJob" next_state="error" error_state="errorInErrorHandling"/>
         <job_chain_node  state="success"/>
         <job_chain_node  state="errorInErrorHandling"/>
         <job_chain_node  state="error"/>
     </job_chain>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-30
      • 2018-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多