|
@@ -120,30 +120,38 @@ public class TaskService {
|
|
+ ",并执行删除 pod 命令:" + podDeleteCommand);
|
|
+ ",并执行删除 pod 命令:" + podDeleteCommand);
|
|
SshUtil.execute(session, podDeleteCommand);
|
|
SshUtil.execute(session, podDeleteCommand);
|
|
// taskManager.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql()); // 如果任务 abort 代表项目失败
|
|
// taskManager.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql()); // 如果任务 abort 代表项目失败
|
|
- taskMapper.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql());
|
|
|
|
redisTemplate.delete("podName:" + taskId);
|
|
redisTemplate.delete("podName:" + taskId);
|
|
//result-path-minio: /project/manual-project/
|
|
//result-path-minio: /project/manual-project/
|
|
-// String projectId = taskMapper.selectProjectIdById(taskId);
|
|
|
|
-// String minioPathOfErrorLog = resultPathMinio + projectId + "/" + taskId + "error.log";
|
|
|
|
-// String errorString = MinioUtil.downloadToString(minioClient, bucketName, minioPathOfErrorLog);
|
|
|
|
-// String[] lines = errorString.split("\n");
|
|
|
|
-// AtomicReference<String> errorMessage = new AtomicReference<>("");
|
|
|
|
-// for (String line : lines) {
|
|
|
|
-// if (line.startsWith("Original Error")) {
|
|
|
|
-// errorMessage.set(errorMessage.get() + line + "\n");
|
|
|
|
-// }
|
|
|
|
-//
|
|
|
|
-// if (line.startsWith("Possible Cause")) {
|
|
|
|
-// errorMessage.set(errorMessage.get() + line);
|
|
|
|
-// break;
|
|
|
|
-// }
|
|
|
|
-// }
|
|
|
|
-// String errorMessageString = errorMessage.get();
|
|
|
|
|
|
+ String projectId = taskMapper.selectProjectIdById(taskId);
|
|
|
|
+ String minioPathOfErrorLog = resultPathMinio + projectId + "/" + taskId + "error.log";
|
|
|
|
+ boolean objectExist = MinioUtil.isObjectExist(minioClient, bucketName, minioPathOfErrorLog);
|
|
|
|
+ String targetEvaluate;
|
|
|
|
+ if (objectExist) {
|
|
|
|
+ String errorString = MinioUtil.downloadToString(minioClient, bucketName, minioPathOfErrorLog);
|
|
|
|
+ String[] lines = errorString.split("\n");
|
|
|
|
+ StringBuilder errorMessage = new StringBuilder();
|
|
|
|
+ for (String line : lines) {
|
|
|
|
+ if (line.startsWith("Original Error")) {
|
|
|
|
+ errorMessage.append(line).append("\n");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (line.startsWith("Possible Cause")) {
|
|
|
|
+ errorMessage.append(line);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ targetEvaluate = errorMessage.toString();
|
|
|
|
+ } else {
|
|
|
|
+ targetEvaluate = DictConstants.TASK_ERROR_REASON_2;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ taskMapper.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql(), targetEvaluate);
|
|
} else if ("Terminated".equals(state)) {
|
|
} else if ("Terminated".equals(state)) {
|
|
log.info("TaskService--state 修改任务 " + taskId + "的状态为 Terminated,pod 名称为:" + podName
|
|
log.info("TaskService--state 修改任务 " + taskId + "的状态为 Terminated,pod 名称为:" + podName
|
|
+ ",并执行删除 pod 命令:" + podDeleteCommand);
|
|
+ ",并执行删除 pod 命令:" + podDeleteCommand);
|
|
SshUtil.execute(session, podDeleteCommand);
|
|
SshUtil.execute(session, podDeleteCommand);
|
|
- taskMapper.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql());
|
|
|
|
|
|
+ taskMapper.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql(), DictConstants.TASK_ERROR_REASON_3);
|
|
redisTemplate.delete("podName:" + taskId);
|
|
redisTemplate.delete("podName:" + taskId);
|
|
} else if ("PendingAnalysis".equals(state)) {
|
|
} else if ("PendingAnalysis".equals(state)) {
|
|
log.info("TaskService--state 修改任务 " + taskId + "的状态为 PendingAnalysis,pod 名称为:" + podName
|
|
log.info("TaskService--state 修改任务 " + taskId + "的状态为 PendingAnalysis,pod 名称为:" + podName
|
|
@@ -153,7 +161,7 @@ public class TaskService {
|
|
redisTemplate.delete("podName:" + taskId);
|
|
redisTemplate.delete("podName:" + taskId);
|
|
} else {
|
|
} else {
|
|
log.error("TaskService--state 出现了未知状态:" + state);
|
|
log.error("TaskService--state 出现了未知状态:" + state);
|
|
- taskMapper.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql());
|
|
|
|
|
|
+ taskMapper.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql(), DictConstants.TASK_ERROR_REASON_4);
|
|
redisTemplate.delete("podName:" + taskId);
|
|
redisTemplate.delete("podName:" + taskId);
|
|
}
|
|
}
|
|
ProjectPO projectPO = projectMapper.selectById(taskId);
|
|
ProjectPO projectPO = projectMapper.selectById(taskId);
|
|
@@ -186,7 +194,8 @@ public class TaskService {
|
|
SshUtil.execute(sessionKafka, topicDeleteCommand);
|
|
SshUtil.execute(sessionKafka, topicDeleteCommand);
|
|
SshUtil.stop(clientKafka, sessionKafka);
|
|
SshUtil.stop(clientKafka, sessionKafka);
|
|
List<TaskPO> taskList = taskMapper.selectTaskListByProjectId(projectId); // 所有任务信息
|
|
List<TaskPO> taskList = taskMapper.selectTaskListByProjectId(projectId); // 所有任务信息
|
|
- log.info("TaskService--state 共有 " + taskList.size() + "个任务!");
|
|
|
|
|
|
+ int taskNumber = taskList.size();
|
|
|
|
+ log.info("TaskService--state 共有 " + taskNumber + "个任务!");
|
|
taskIndexMapper.deleteFirstByProjectId(projectId);
|
|
taskIndexMapper.deleteFirstByProjectId(projectId);
|
|
taskIndexMapper.deleteLastByProjectId(projectId);
|
|
taskIndexMapper.deleteLastByProjectId(projectId);
|
|
// -------------------------------- 查询叶子指标 --------------------------------
|
|
// -------------------------------- 查询叶子指标 --------------------------------
|
|
@@ -211,7 +220,7 @@ public class TaskService {
|
|
FileUtil.writeInputStreamToLocalFile(IoUtil.stringToInputStream(ruleDetails), ruleFilePath);
|
|
FileUtil.writeInputStreamToLocalFile(IoUtil.stringToInputStream(ruleDetails), ruleFilePath);
|
|
|
|
|
|
List<TaskPO> taskListOfLeafIndex = taskList.stream()
|
|
List<TaskPO> taskListOfLeafIndex = taskList.stream()
|
|
- .filter(task -> indexId.equals(task.getLastTargetId()) && DictConstants.TASK_ANALYSIS.equals(task.getRunState()))
|
|
|
|
|
|
+ .filter(task -> indexId.equals(task.getLastTargetId()))
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
log.info("TaskService--state 叶子节点 " + indexId + " 包括 " + taskListOfLeafIndex.size() + " 个成功运行结束任务!");
|
|
log.info("TaskService--state 叶子节点 " + indexId + " 包括 " + taskListOfLeafIndex.size() + " 个成功运行结束任务!");
|
|
@@ -247,7 +256,7 @@ public class TaskService {
|
|
}
|
|
}
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
task2.setRunState(DictConstants.TASK_ABORTED);
|
|
task2.setRunState(DictConstants.TASK_ABORTED);
|
|
- taskMapper.updateFailStateWithStopTime(task2Id, DictConstants.TASK_ABORTED, TimeUtil.getNowForMysql());
|
|
|
|
|
|
+ taskMapper.updateFailStateWithStopTime(task2Id, DictConstants.TASK_ABORTED, TimeUtil.getNowForMysql(), DictConstants.TASK_ERROR_REASON_5);
|
|
throw new RuntimeException(e.getMessage());
|
|
throw new RuntimeException(e.getMessage());
|
|
}
|
|
}
|
|
ScoreTO score = null;
|
|
ScoreTO score = null;
|
|
@@ -279,7 +288,7 @@ public class TaskService {
|
|
|
|
|
|
// 计算不合格的任务数(不到100分就是不合格,执行失败的不算)
|
|
// 计算不合格的任务数(不到100分就是不合格,执行失败的不算)
|
|
long notStandardSceneNumber = taskListOfLeafIndex.stream()
|
|
long notStandardSceneNumber = taskListOfLeafIndex.stream()
|
|
- .filter(task -> task.getScore() < 100)
|
|
|
|
|
|
+ .filter(task -> task.getScore() < 100)
|
|
.count();
|
|
.count();
|
|
|
|
|
|
// 计算总分
|
|
// 计算总分
|