|
|
|
@ -82,7 +82,6 @@ import org.apache.dolphinscheduler.service.quartz.cron.CronUtils;
|
|
|
|
|
import org.apache.dolphinscheduler.service.queue.PeerTaskInstancePriorityQueue; |
|
|
|
|
|
|
|
|
|
import org.apache.commons.collections.CollectionUtils; |
|
|
|
|
import org.apache.commons.lang3.ArrayUtils; |
|
|
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
|
|
import org.apache.commons.lang3.math.NumberUtils; |
|
|
|
|
|
|
|
|
@ -1820,12 +1819,13 @@ public class WorkflowExecuteRunnable implements Callable<WorkflowSubmitStatue> {
|
|
|
|
|
|
|
|
|
|
// todo: Can we use a better way to set the recover taskInstanceId list? rather then use the cmdParam
|
|
|
|
|
if (paramMap != null && paramMap.containsKey(CMD_PARAM_RECOVERY_START_NODE_STRING)) { |
|
|
|
|
String[] idList = paramMap.get(CMD_PARAM_RECOVERY_START_NODE_STRING).split(Constants.COMMA); |
|
|
|
|
if (ArrayUtils.isNotEmpty(idList)) { |
|
|
|
|
List<Integer> taskInstanceIds = Arrays.stream(idList) |
|
|
|
|
.map(Integer::valueOf) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
return processService.findTaskInstanceByIdList(taskInstanceIds); |
|
|
|
|
List<Integer> startTaskInstanceIds = Arrays.stream(paramMap.get(CMD_PARAM_RECOVERY_START_NODE_STRING) |
|
|
|
|
.split(COMMA)) |
|
|
|
|
.filter(StringUtils::isNotEmpty) |
|
|
|
|
.map(Integer::valueOf) |
|
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
if (CollectionUtils.isNotEmpty(startTaskInstanceIds)) { |
|
|
|
|
return processService.findTaskInstanceByIdList(startTaskInstanceIds); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return Collections.emptyList(); |
|
|
|
|