Unverified Commit bef3eef7 authored by bao liang's avatar bao liang Committed by GitHub
Browse files

Merge pull request #160 from lenboo/dev-20190415

add time out 
parents d7d3423a 150b3f37
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line Diff line number Diff line
@@ -125,6 +125,7 @@ public class ProcessDefinitionService extends BaseDAGService {
        processDefine.setDesc(desc);
        processDefine.setDesc(desc);
        processDefine.setLocations(locations);
        processDefine.setLocations(locations);
        processDefine.setConnects(connects);
        processDefine.setConnects(connects);
        processDefine.setTimeout(processData.getTimeout());


        //custom global params
        //custom global params
        List<Property> globalParamsList = processData.getGlobalParams();
        List<Property> globalParamsList = processData.getGlobalParams();
@@ -288,6 +289,7 @@ public class ProcessDefinitionService extends BaseDAGService {
        processDefine.setDesc(desc);
        processDefine.setDesc(desc);
        processDefine.setLocations(locations);
        processDefine.setLocations(locations);
        processDefine.setConnects(connects);
        processDefine.setConnects(connects);
        processDefine.setTimeout(processData.getTimeout());


        //custom global params
        //custom global params
        List<Property> globalParamsList = processData.getGlobalParams();
        List<Property> globalParamsList = processData.getGlobalParams();
+15 −4
Original line number Original line Diff line number Diff line
@@ -346,7 +346,8 @@ public class ProcessInstanceService extends BaseDAGService {


        //check process instance status
        //check process instance status
        if (!processInstance.getState().typeIsFinished()) {
        if (!processInstance.getState().typeIsFinished()) {
            putMsg(result, Status.PROCESS_INSTANCE_STATE_OPERATION_ERROR, "update");
            putMsg(result, Status.PROCESS_INSTANCE_STATE_OPERATION_ERROR,
                    processInstance.getName(), processInstance.getState().toString(), "update");
            return result;
            return result;
        }
        }
        Date schedule = null;
        Date schedule = null;
@@ -355,8 +356,12 @@ public class ProcessInstanceService extends BaseDAGService {
        } else {
        } else {
            schedule = processInstance.getScheduleTime();
            schedule = processInstance.getScheduleTime();
        }
        }
        processInstance.setScheduleTime(schedule);
        processInstance.setLocations(locations);
        processInstance.setConnects(connects);
        String globalParams = null;
        String globalParams = null;
        String originDefParams = null;
        String originDefParams = null;
        int timeout = processInstance.getTimeout();
        if (StringUtils.isNotEmpty(processInstanceJson)) {
        if (StringUtils.isNotEmpty(processInstanceJson)) {
            ProcessData processData = JSONUtils.parseObject(processInstanceJson, ProcessData.class);
            ProcessData processData = JSONUtils.parseObject(processInstanceJson, ProcessData.class);
            //check workflow json is valid
            //check workflow json is valid
@@ -370,9 +375,14 @@ public class ProcessInstanceService extends BaseDAGService {
            Map<String, String> globalParamMap = globalParamList.stream().collect(Collectors.toMap(Property::getProp, Property::getValue));
            Map<String, String> globalParamMap = globalParamList.stream().collect(Collectors.toMap(Property::getProp, Property::getValue));
            globalParams = ParameterUtils.curingGlobalParams(globalParamMap, globalParamList,
            globalParams = ParameterUtils.curingGlobalParams(globalParamMap, globalParamList,
                    processInstance.getCmdTypeIfComplement(), schedule);
                    processInstance.getCmdTypeIfComplement(), schedule);
        }
            timeout = processData.getTimeout();
        int update = processDao.updateProcessInstance(processInstanceId, processInstanceJson,
            processInstance.setTimeout(timeout);
                globalParams, schedule, flag, locations, connects);
            processInstance.setProcessInstanceJson(processInstanceJson);
            processInstance.setGlobalParams(globalParams);
        }
//        int update = processDao.updateProcessInstance(processInstanceId, processInstanceJson,
//                globalParams, schedule, flag, locations, connects);
        int update = processDao.updateProcessInstance(processInstance);
        int updateDefine = 1;
        int updateDefine = 1;
        if (syncDefine && StringUtils.isNotEmpty(processInstanceJson)) {
        if (syncDefine && StringUtils.isNotEmpty(processInstanceJson)) {
            ProcessDefinition processDefinition = processDao.findProcessDefineById(processInstance.getProcessDefinitionId());
            ProcessDefinition processDefinition = processDao.findProcessDefineById(processInstance.getProcessDefinitionId());
@@ -380,6 +390,7 @@ public class ProcessInstanceService extends BaseDAGService {
            processDefinition.setGlobalParams(originDefParams);
            processDefinition.setGlobalParams(originDefParams);
            processDefinition.setLocations(locations);
            processDefinition.setLocations(locations);
            processDefinition.setConnects(connects);
            processDefinition.setConnects(connects);
            processDefinition.setTimeout(timeout);
            updateDefine = processDefineMapper.update(processDefinition);
            updateDefine = processDefineMapper.update(processDefinition);
        }
        }
        if (update > 0 && updateDefine > 0) {
        if (update > 0 && updateDefine > 0) {
+5 −0
Original line number Original line Diff line number Diff line
@@ -331,6 +331,11 @@ public final class Constants {
     */
     */
    public static final int MAX_TASK_TIMEOUT = 24 * 3600;
    public static final int MAX_TASK_TIMEOUT = 24 * 3600;


    /**
     * max task timeout
     */
    public static final int MAX_PROCESS_TIMEOUT = Integer.MAX_VALUE;



    /**
    /**
     * heartbeat threads number
     * heartbeat threads number
+33 −2
Original line number Original line Diff line number Diff line
@@ -23,6 +23,8 @@ import cn.escheduler.dao.datasource.ConnectionFactory;
import cn.escheduler.dao.mapper.AlertMapper;
import cn.escheduler.dao.mapper.AlertMapper;
import cn.escheduler.dao.mapper.UserAlertGroupMapper;
import cn.escheduler.dao.mapper.UserAlertGroupMapper;
import cn.escheduler.dao.model.Alert;
import cn.escheduler.dao.model.Alert;
import cn.escheduler.dao.model.ProcessDefinition;
import cn.escheduler.dao.model.ProcessInstance;
import cn.escheduler.dao.model.User;
import cn.escheduler.dao.model.User;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.Logger;
@@ -83,8 +85,9 @@ public class AlertDao extends AbstractBaseDao {
     */
     */
    public void sendServerStopedAlert(int alertgroupId,String host,String serverType){
    public void sendServerStopedAlert(int alertgroupId,String host,String serverType){
        Alert alert = new Alert();
        Alert alert = new Alert();
        String content = String.format("[{'type':'%s','host':'%s','event':'服务挂掉','警告级别':'严重'}]",serverType,host);
        String content = String.format("[{'type':'%s','host':'%s','event':'server down','warning level':'serious'}]",
        alert.setTitle("容错告警");
                serverType, host);
        alert.setTitle("Fault tolerance warning");
        alert.setShowType(ShowType.TABLE);
        alert.setShowType(ShowType.TABLE);
        alert.setContent(content);
        alert.setContent(content);
        alert.setAlertType(AlertType.EMAIL);
        alert.setAlertType(AlertType.EMAIL);
@@ -94,6 +97,34 @@ public class AlertDao extends AbstractBaseDao {
        alertMapper.insert(alert);
        alertMapper.insert(alert);
    }
    }


    /**
     * process time out alert
     * @param processInstance
     * @param processDefinition
     */
    public void sendProcessTimeoutAlert(ProcessInstance processInstance, ProcessDefinition processDefinition){
        int alertgroupId = processInstance.getWarningGroupId();
        String receivers = processDefinition.getReceivers();
        String receiversCc = processDefinition.getReceiversCc();
        Alert alert = new Alert();
        String content = String.format("[{'id':'%d','name':'%s','event':'timeout','warnLevel':'middle'}]",
                processInstance.getId(), processInstance.getName());
        alert.setTitle("Process Timeout Warn");
        alert.setShowType(ShowType.TABLE);
        alert.setContent(content);
        alert.setAlertType(AlertType.EMAIL);
        alert.setAlertGroupId(alertgroupId);
        if (StringUtils.isNotEmpty(receivers)) {
            alert.setReceivers(receivers);
        }
        if (StringUtils.isNotEmpty(receiversCc)) {
            alert.setReceiversCc(receiversCc);
        }
        alert.setCreateTime(new Date());
        alert.setUpdateTime(new Date());
        alertMapper.insert(alert);
    }

    /**
    /**
     * task timeout warn
     * task timeout warn
     */
     */
+1 −0
Original line number Original line Diff line number Diff line
@@ -482,6 +482,7 @@ public class ProcessDao extends AbstractBaseDao {
        // set process instance priority
        // set process instance priority
        processInstance.setProcessInstancePriority(command.getProcessInstancePriority());
        processInstance.setProcessInstancePriority(command.getProcessInstancePriority());
        processInstance.setWorkerGroupId(command.getWorkerGroupId());
        processInstance.setWorkerGroupId(command.getWorkerGroupId());
        processInstance.setTimeout(processDefinition.getTimeout());
        return processInstance;
        return processInstance;
    }
    }


Loading