mirror of
https://gitee.com/dolphinscheduler/DolphinScheduler.git
synced 2024-11-30 03:08:01 +08:00
This commit is contained in:
parent
b71f6aea7a
commit
20a3741b24
@ -187,7 +187,7 @@ public class MasterSchedulerService extends Thread {
|
||||
if (processInstance.getTimeout() > 0) {
|
||||
this.processTimeoutCheckList.put(processInstance.getId(), processInstance);
|
||||
}
|
||||
logger.info("command {} process {} start...",
|
||||
logger.info("handle command end, command {} process {} start...",
|
||||
command.getId(), processInstance.getId());
|
||||
masterExecService.execute(workflowExecuteThread);
|
||||
}
|
||||
|
@ -438,9 +438,14 @@ public class WorkflowExecuteThread implements Runnable {
|
||||
endProcess();
|
||||
int index = complementListDate.indexOf(scheduleDate);
|
||||
if (index >= complementListDate.size() - 1 || !processInstance.getState().typeIsSuccess()) {
|
||||
logger.info("process complement end. process id:{}", processInstance.getId());
|
||||
// complement data ends || no success
|
||||
return false;
|
||||
}
|
||||
logger.info("process complement continue. process id:{}, schedule time:{} complementListDate:{}",
|
||||
processInstance.getId(),
|
||||
processInstance.getScheduleTime(),
|
||||
complementListDate.toString());
|
||||
scheduleDate = complementListDate.get(index + 1);
|
||||
//the next process complement
|
||||
processInstance.setId(0);
|
||||
@ -555,16 +560,9 @@ public class WorkflowExecuteThread implements Runnable {
|
||||
}
|
||||
|
||||
if (complementListDate.size() == 0 && needComplementProcess()) {
|
||||
Map<String, String> cmdParam = JSONUtils.toMap(processInstance.getCommandParam());
|
||||
Date startDate = DateUtils.getScheduleDate(cmdParam.get(CMDPARAM_COMPLEMENT_DATA_START_DATE));
|
||||
Date endDate = DateUtils.getScheduleDate(cmdParam.get(CMDPARAM_COMPLEMENT_DATA_END_DATE));
|
||||
if (startDate.after(endDate)) {
|
||||
Date tmp = startDate;
|
||||
startDate = endDate;
|
||||
endDate = tmp;
|
||||
}
|
||||
List<Schedule> schedules = processService.queryReleaseSchedulerListByProcessDefinitionCode(processInstance.getProcessDefinitionCode());
|
||||
complementListDate.addAll(CronUtils.getSelfFireDateList(startDate, endDate, schedules));
|
||||
complementListDate = processService.getComplementDateList(
|
||||
JSONUtils.toMap(processInstance.getCommandParam()),
|
||||
processInstance.getProcessDefinitionCode());
|
||||
logger.info(" process definition code:{} complement data: {}",
|
||||
processInstance.getProcessDefinitionCode(), complementListDate.toString());
|
||||
}
|
||||
|
@ -104,6 +104,7 @@ import org.apache.dolphinscheduler.dao.mapper.UserMapper;
|
||||
import org.apache.dolphinscheduler.dao.utils.DagHelper;
|
||||
import org.apache.dolphinscheduler.remote.utils.Host;
|
||||
import org.apache.dolphinscheduler.service.log.LogClientService;
|
||||
import org.apache.dolphinscheduler.service.quartz.cron.CronUtils;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
|
||||
@ -583,8 +584,16 @@ public class ProcessService {
|
||||
*/
|
||||
private Date getScheduleTime(Command command, Map<String, String> cmdParam) {
|
||||
Date scheduleTime = command.getScheduleTime();
|
||||
if (scheduleTime == null && cmdParam != null && cmdParam.containsKey(CMDPARAM_COMPLEMENT_DATA_START_DATE)) {
|
||||
scheduleTime = DateUtils.stringToDate(cmdParam.get(CMDPARAM_COMPLEMENT_DATA_START_DATE));
|
||||
if (scheduleTime == null
|
||||
&& cmdParam != null
|
||||
&& cmdParam.containsKey(CMDPARAM_COMPLEMENT_DATA_START_DATE)) {
|
||||
List<Date> complementDateList = getComplementDateList(cmdParam, command.getProcessDefinitionCode());
|
||||
if (complementDateList.size() > 0) {
|
||||
scheduleTime = complementDateList.get(0);
|
||||
} else {
|
||||
logger.error("set scheduler time error: complement date list is empty, command: {}",
|
||||
command.toString());
|
||||
}
|
||||
}
|
||||
return scheduleTime;
|
||||
}
|
||||
@ -963,10 +972,11 @@ public class ProcessService {
|
||||
return;
|
||||
}
|
||||
|
||||
Date startComplementTime = DateUtils.parse(cmdParam.get(CMDPARAM_COMPLEMENT_DATA_START_DATE),
|
||||
YYYY_MM_DD_HH_MM_SS);
|
||||
if (Flag.NO == processInstance.getIsSubProcess()) {
|
||||
processInstance.setScheduleTime(startComplementTime);
|
||||
List<Date> complementDate = getComplementDateList(cmdParam, processInstance.getProcessDefinitionCode());
|
||||
|
||||
if (complementDate.size() > 0
|
||||
&& Flag.NO == processInstance.getIsSubProcess()) {
|
||||
processInstance.setScheduleTime(complementDate.get(0));
|
||||
}
|
||||
processInstance.setGlobalParams(ParameterUtils.curingGlobalParams(
|
||||
processDefinition.getGlobalParamMap(),
|
||||
@ -975,6 +985,27 @@ public class ProcessService {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* return complement date list
|
||||
*
|
||||
* @param cmdParam
|
||||
* @param processDefinitionCode
|
||||
* @return
|
||||
*/
|
||||
public List<Date> getComplementDateList(Map<String, String> cmdParam, Long processDefinitionCode) {
|
||||
List<Date> result = new ArrayList<>();
|
||||
Date startDate = DateUtils.getScheduleDate(cmdParam.get(CMDPARAM_COMPLEMENT_DATA_START_DATE));
|
||||
Date endDate = DateUtils.getScheduleDate(cmdParam.get(CMDPARAM_COMPLEMENT_DATA_END_DATE));
|
||||
if (startDate.after(endDate)) {
|
||||
Date tmp = startDate;
|
||||
startDate = endDate;
|
||||
endDate = tmp;
|
||||
}
|
||||
List<Schedule> schedules = queryReleaseSchedulerListByProcessDefinitionCode(processDefinitionCode);
|
||||
result.addAll(CronUtils.getSelfFireDateList(startDate, endDate, schedules));
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* set sub work process parameters.
|
||||
* handle sub work process instance, update relation table and command parameters
|
||||
|
Loading…
Reference in New Issue
Block a user