Commit 11510469 by huangfusuper

执行机错误传递

parent 2028369e
...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON; ...@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import com.byit.dto.executor.ScriptDto; import com.byit.dto.executor.ScriptDto;
import com.byit.dto.executor.ScriptParamAndPlaceholderDto; import com.byit.dto.executor.ScriptParamAndPlaceholderDto;
import com.byit.enums.PlaceholderEnum; import com.byit.enums.PlaceholderEnum;
import com.byit.exceptions.ExecutorException;
import com.byit.filesystem.FileSystem; import com.byit.filesystem.FileSystem;
import com.byit.job.utils.DateUtil; import com.byit.job.utils.DateUtil;
import com.byit.job.utils.PlaceholderUtils; import com.byit.job.utils.PlaceholderUtils;
...@@ -41,30 +42,35 @@ public class CommandAndScriptProcessingMachine implements ProcessingMachine { ...@@ -41,30 +42,35 @@ public class CommandAndScriptProcessingMachine implements ProcessingMachine {
@Override @Override
public void executor(ScriptDto scriptDto, ProcessingNodeChain processingNodeChain) { public void executor(ScriptDto scriptDto, ProcessingNodeChain processingNodeChain) {
log.debug("-----执行到命令和脚本的处理节点,开始初始化命令和脚本------------"); try {
String command = scriptDto.getCommand(); log.debug("-----执行到命令和脚本的处理节点,开始初始化命令和脚本------------");
log.debug("-----初始命令为{}------------",command); String command = scriptDto.getCommand();
String param = scriptDto.getParam(); log.debug("-----初始命令为{}------------",command);
if (StringUtils.isNotBlank(param)) { String param = scriptDto.getParam();
ScriptParamAndPlaceholderDto paramAndPlaceholderDto = JSON.parseObject(param, ScriptParamAndPlaceholderDto.class); if (StringUtils.isNotBlank(param)) {
ScriptParamAndPlaceholderDto paramAndPlaceholderDto = JSON.parseObject(param, ScriptParamAndPlaceholderDto.class);
//判断是否需要拉取文件服务器的文件,包含biz_file的条件下会对这个字段进行替换 //判断是否需要拉取文件服务器的文件,包含biz_file的条件下会对这个字段进行替换
if (command.contains(PlaceholderEnum.BIZ_SCRIPT_FILE.getName())) { if (command.contains(PlaceholderEnum.BIZ_SCRIPT_FILE.getName())) {
String scriptPath = byteArrayToFile(scriptDto.getRemotePath(),paramAndPlaceholderDto); String scriptPath = byteArrayToFile(scriptDto.getRemotePath(),paramAndPlaceholderDto);
log.debug("-----远程地址的文件被拉取到:[{}]------------",scriptPath); log.debug("-----远程地址的文件被拉取到:[{}]------------",scriptPath);
//初始化命令信息 //初始化命令信息
command = PlaceholderUtils.initCommand(command,scriptPath); command = PlaceholderUtils.initCommand(command,scriptPath);
log.debug("-----执行命令初始化完成,命令为:[{}]------------",command); log.debug("-----执行命令初始化完成,命令为:[{}]------------",command);
scriptDto.setCommand(command);
}
//执行命令参数的替换
command = PlaceholderUtils.commandReplace(command,paramAndPlaceholderDto.getParam());
log.debug("-----命令参数替换完成,命令为:[{}]------------",command);
scriptDto.setCommand(command); scriptDto.setCommand(command);
} }
//执行命令参数的替换 //将脚本的携带的参数 拼接在命令后方 python test.py -sex 男 -name 张三 -age 14
command = PlaceholderUtils.commandReplace(command,paramAndPlaceholderDto.getParam()); log.info("---------命令及脚本参数处理完成,此节点处理数据为:[{}]-----------",scriptDto);
log.debug("-----命令参数替换完成,命令为:[{}]------------",command); processingNodeChain.doProcessing(scriptDto,processingNodeChain);
scriptDto.setCommand(command); }catch (Exception e) {
e.printStackTrace();
throw new ExecutorException(e);
} }
//将脚本的携带的参数 拼接在命令后方 python test.py -sex 男 -name 张三 -age 14
log.info("---------命令及脚本参数处理完成,此节点处理数据为:[{}]-----------",scriptDto);
processingNodeChain.doProcessing(scriptDto,processingNodeChain);
} }
/** /**
......
...@@ -59,6 +59,7 @@ public class LogDataProcessingMachine implements ProcessingMachine { ...@@ -59,6 +59,7 @@ public class LogDataProcessingMachine implements ProcessingMachine {
logPath = fileSystem.uploadFile(logDataByte,LOG_SUFFIX,fileMateData); logPath = fileSystem.uploadFile(logDataByte,LOG_SUFFIX,fileMateData);
} }
scriptDto.setLogRemotePath(logPath); scriptDto.setLogRemotePath(logPath);
processingNodeChain.doProcessing(scriptDto,processingNodeChain);
}catch (Exception e) { }catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
throw new ExecutorException(e); throw new ExecutorException(e);
......
package com.byit.node.impl; package com.byit.node.impl;
import com.byit.dto.executor.ScriptDto; import com.byit.dto.executor.ScriptDto;
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;
...@@ -32,25 +33,29 @@ public class RunScriptProcessingMachine implements ProcessingMachine { ...@@ -32,25 +33,29 @@ 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-"); try {
List<String> cmdList = Arrays.asList(scriptDto.getCommand().split(" ")); boolean isRunNode = scriptDto.getRunId().contains("REAL-EXEC-");
MythJobProcess mythJobProcess; List<String> cmdList = Arrays.asList(scriptDto.getCommand().split(" "));
if(isRunNode) { MythJobProcess mythJobProcess;
mythJobProcess = new MythJobProcess(cmdList, null, null, scriptDto.getLogId(), stringRedisTemplate); if(isRunNode) {
}else { mythJobProcess = new MythJobProcess(cmdList, null, null, scriptDto.getLogId(), stringRedisTemplate);
mythJobProcess = new MythJobProcess(cmdList, null, null, scriptDto.getLogId(), null); }else {
mythJobProcess = new MythJobProcess(cmdList, null, null, scriptDto.getLogId(), null);
}
//保存日志
String logData = mythJobProcess.call();
//成功 是0 失败是其他的 杀死是-100
int exitCode = mythJobProcess.getExitCode();
if(exitCode == NODE_KILL_CODE){
logData = KILL_MESSAGE;
}
scriptDto.setRunLogData(logData);
scriptDto.setExitCode(exitCode);
processingNodeChain.doProcessing(scriptDto,processingNodeChain);
} catch (Exception e) {
throw new ExecutorException(e);
} }
//保存日志
String logData = mythJobProcess.call();
//成功 是0 失败是其他的 杀死是-100
int exitCode = mythJobProcess.getExitCode();
if(exitCode == NODE_KILL_CODE){
logData = KILL_MESSAGE;
}
scriptDto.setRunLogData(logData);
scriptDto.setExitCode(exitCode);
processingNodeChain.doProcessing(scriptDto,processingNodeChain);
} }
} }
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