CmdDispatchServiceImpl.java 文件源码

java
阅读 19 收藏 0 点赞 0 评论 0

项目:flow-platform 作者:
@Override
@Transactional(propagation = Propagation.NEVER)
@Scheduled(fixedDelay = 300 * 1000)
public void checkTimeoutTask() {
    if (!taskConfig.isEnableCmdExecTimeoutTask()) {
        return;
    }
    LOGGER.traceMarker("checkTimeoutTask", "start");

    // find all running status cmd
    List<Cmd> workingCmdList = cmdService.listWorkingCmd(null);

    for (Cmd cmd : workingCmdList) {
        if (cmd.getType() != CmdType.RUN_SHELL || !cmd.isCurrent()) {
            continue;
        }

        if (DateUtil.isTimeOut(cmd.getCreatedDate(), ZonedDateTime.now(), cmd.getTimeout())) {
            try {
                Cmd killCmd = cmdService.create(new CmdInfo(cmd.getAgentPath(), CmdType.KILL, null));
                dispatch(killCmd);
                LOGGER.traceMarker("checkTimeoutTask", "Send KILL for timeout cmd %s", cmd);

                CmdStatusItem statusItem = new CmdStatusItem(cmd.getId(), CmdStatus.TIMEOUT_KILL, null, true, true);
                cmdService.updateStatus(statusItem, false);
            } catch (Throwable e) {
                LOGGER.warn(e.getMessage());
            }
        }
    }

    LOGGER.traceMarker("checkTimeoutTask", "end");
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号