Commit df6ddbfe by huangfusuper

执行节点执行出现异常的处理

parent e42166f2
package com.byit.node.impl; package com.byit.node.impl;
import com.alibaba.fastjson.JSON;
import com.byit.dto.executor.ScriptDto; import com.byit.dto.executor.ScriptDto;
import com.byit.dto.plugin.RunLog;
import com.byit.exceptions.ExecutorException; import com.byit.exceptions.ExecutorException;
import com.byit.node.ProcessingNodeChain; import com.byit.node.ProcessingNodeChain;
import com.byit.node.machine.ProcessingMachine; import com.byit.node.machine.ProcessingMachine;
import com.byit.process.MythJobProcess; import com.byit.process.MythJobProcess;
import com.byit.utils.KeyUtil;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate;
...@@ -14,6 +17,8 @@ import java.util.ArrayList; ...@@ -14,6 +17,8 @@ import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import static com.alibaba.fastjson.serializer.SerializerFeature.WriteClassName;
/** /**
* 执行脚本的处理节点 * 执行脚本的处理节点
* @author huangfu * @author huangfu
...@@ -35,8 +40,9 @@ public class RunScriptProcessingMachine implements ProcessingMachine { ...@@ -35,8 +40,9 @@ public class RunScriptProcessingMachine implements ProcessingMachine {
@Override @Override
public void executor(ScriptDto scriptDto, ProcessingNodeChain processingNodeChain) { public void executor(ScriptDto scriptDto, ProcessingNodeChain processingNodeChain) {
boolean isRunNode = scriptDto.getRunId().contains("REAL:EXEC:");
String runKey = KeyUtil.generateRunKey(scriptDto.getLogId());
try { try {
boolean isRunNode = scriptDto.getRunId().contains("REAL:EXEC:");
List<String> cmdList = Arrays.asList(scriptDto.getCommand().split(" ")); List<String> cmdList = Arrays.asList(scriptDto.getCommand().split(" "));
List<String> newCmdList = new ArrayList<>(); List<String> newCmdList = new ArrayList<>();
cmdList.forEach(cmd ->{ cmdList.forEach(cmd ->{
...@@ -63,6 +69,10 @@ public class RunScriptProcessingMachine implements ProcessingMachine { ...@@ -63,6 +69,10 @@ public class RunScriptProcessingMachine implements ProcessingMachine {
scriptDto.setExitCode(exitCode); scriptDto.setExitCode(exitCode);
processingNodeChain.doProcessing(scriptDto,processingNodeChain); processingNodeChain.doProcessing(scriptDto,processingNodeChain);
} catch (Exception e) { } catch (Exception e) {
if(isRunNode) {
RunLog runLog = RunLog.builder().isEnd(true).runLog("节点执行异常!").isSuccess(false).build();
stringRedisTemplate.opsForList().rightPush(runKey, JSON.toJSONString(runLog, WriteClassName));
}
throw new ExecutorException(e); throw new ExecutorException(e);
} }
} }
......
...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; ...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.byit.dto.plugin.RunLog; import com.byit.dto.plugin.RunLog;
import com.byit.utils.ExecutorLogUtil; import com.byit.utils.ExecutorLogUtil;
import com.byit.utils.JobContentUtil; import com.byit.utils.JobContentUtil;
import com.byit.utils.KeyUtil;
import com.byit.utils.LogGobbler; import com.byit.utils.LogGobbler;
import com.google.common.base.Joiner; import com.google.common.base.Joiner;
import lombok.SneakyThrows; import lombok.SneakyThrows;
...@@ -70,7 +71,7 @@ public class MythJobProcess implements Callable<String>{ ...@@ -70,7 +71,7 @@ public class MythJobProcess implements Callable<String>{
this.completeLatch = new CountDownLatch(1); this.completeLatch = new CountDownLatch(1);
this.logId = logId; this.logId = logId;
this.stringRedisTemplate = stringRedisTemplate; this.stringRedisTemplate = stringRedisTemplate;
this.runKey = "REAL:EXEC:" + logId; this.runKey = KeyUtil.generateRunKey(logId);
} }
public MythJobProcess(final List<String> cmd, final Map<String, String> env, public MythJobProcess(final List<String> cmd, final Map<String, String> env,
......
package com.byit.utils;
/**
* 生成key的工具类
* @author huangfu
*/
public class KeyUtil {
public static final String REAL_EXEC_PRE = "REAL:EXEC:%s";
/**
* 生成运行主键
* @param logId 日志id
* @return 对应的主键
*/
public static String generateRunKey(Integer logId) {
return String.format(REAL_EXEC_PRE,logId);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment