|
@@ -120,7 +120,7 @@ public class TaskManager {
|
|
public boolean isProjectCompleted(PrefixTO redisPrefix, String projectId, String projectType, String maxSimulationTime, String taskId, String state, String podName) {
|
|
public boolean isProjectCompleted(PrefixTO redisPrefix, String projectId, String projectType, String maxSimulationTime, String taskId, String state, String podName) {
|
|
boolean result = false;
|
|
boolean result = false;
|
|
String nodeName = projectUtil.getNodeNameOfPod(projectId, podName);
|
|
String nodeName = projectUtil.getNodeNameOfPod(projectId, podName);
|
|
- if ("Running".equals(state)) { // 运行中的 pod 无需删除
|
|
|
|
|
|
+ if (DictConstants.TASK_RUNNING.equals(state)) { // 运行中的 pod 无需删除
|
|
// 将运行中的任务的 pod 名称放入 redis
|
|
// 将运行中的任务的 pod 名称放入 redis
|
|
stringRedisTemplate.opsForValue().set(redisPrefix.getTaskPodKey(), podName);
|
|
stringRedisTemplate.opsForValue().set(redisPrefix.getTaskPodKey(), podName);
|
|
taskTick(taskId); // 刷新一下心跳
|
|
taskTick(taskId); // 刷新一下心跳
|
|
@@ -131,7 +131,7 @@ public class TaskManager {
|
|
// -------------------------------- 处理状态 --------------------------------
|
|
// -------------------------------- 处理状态 --------------------------------
|
|
try {
|
|
try {
|
|
log.info("修改任务 " + taskId + "的状态为 " + state + ",pod 名称为:" + podName + ",并删除 pod。");
|
|
log.info("修改任务 " + taskId + "的状态为 " + state + ",pod 名称为:" + podName + ",并删除 pod。");
|
|
- if ("Aborted".equals(state)) {
|
|
|
|
|
|
+ if (DictConstants.TASK_ABORTED.equals(state)) {
|
|
String minioPathOfErrorLog = resultPathMinio + projectId + "/" + taskId + "error.log";
|
|
String minioPathOfErrorLog = resultPathMinio + projectId + "/" + taskId + "error.log";
|
|
boolean objectExist = MinioUtil.isObjectExist(minioClient, bucketName, minioPathOfErrorLog);
|
|
boolean objectExist = MinioUtil.isObjectExist(minioClient, bucketName, minioPathOfErrorLog);
|
|
String targetEvaluate;
|
|
String targetEvaluate;
|
|
@@ -153,9 +153,9 @@ public class TaskManager {
|
|
targetEvaluate = DictConstants.TASK_ERROR_REASON_2;
|
|
targetEvaluate = DictConstants.TASK_ERROR_REASON_2;
|
|
}
|
|
}
|
|
taskMapper.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql(), targetEvaluate);
|
|
taskMapper.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql(), targetEvaluate);
|
|
- } else if ("Terminated".equals(state)) {
|
|
|
|
|
|
+ } else if (DictConstants.TASK_TERMINATED.equals(state)) {
|
|
taskMapper.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql(), DictConstants.TASK_ERROR_REASON_3);
|
|
taskMapper.updateFailStateWithStopTime(taskId, state, TimeUtil.getNowForMysql(), DictConstants.TASK_ERROR_REASON_3);
|
|
- } else if ("PendingAnalysis".equals(state)) {
|
|
|
|
|
|
+ } else if (DictConstants.TASK_ANALYSIS.equals(state)) {
|
|
taskMapper.updateSuccessStateWithStopTime(taskId, state, TimeUtil.getNowForMysql());
|
|
taskMapper.updateSuccessStateWithStopTime(taskId, state, TimeUtil.getNowForMysql());
|
|
// 查询项目是否使用 gpu 生成视频(0是1否)
|
|
// 查询项目是否使用 gpu 生成视频(0是1否)
|
|
String isChoiceGpu = projectUtil.getProjectByProjectId(projectId).getIsChoiceGpu();
|
|
String isChoiceGpu = projectUtil.getProjectByProjectId(projectId).getIsChoiceGpu();
|
|
@@ -163,8 +163,9 @@ public class TaskManager {
|
|
log.info("项目 {} 使用 GPU 生成视频。", projectId);
|
|
log.info("项目 {} 使用 GPU 生成视频。", projectId);
|
|
} else if (DictConstants.VIDEO_CPU.equals(isChoiceGpu)) {
|
|
} else if (DictConstants.VIDEO_CPU.equals(isChoiceGpu)) {
|
|
log.info("项目 {} 使用 CPU 生成视频。", projectId);
|
|
log.info("项目 {} 使用 CPU 生成视频。", projectId);
|
|
- final Boolean success = customRedisClient.getDistributedLock("project:" + projectId + ":task:" + taskId + ":generateVideo:"); // 分布式锁
|
|
|
|
|
|
+ final Boolean success = customRedisClient.getDistributedLock("project:" + projectId + ":task:" + taskId + ":sendRequestToGenerateVideo:"); // 分布式锁
|
|
if (Boolean.TRUE.equals(success)) {
|
|
if (Boolean.TRUE.equals(success)) {
|
|
|
|
+ log.info("项目 {} 的任务 {} 获取锁成功。", projectId, taskId);
|
|
FutureTask<ResponseBodyVO<String>> videoTask = new FutureTask<>(() -> videoService.generateVideo(projectId, projectType, maxSimulationTime, taskId));
|
|
FutureTask<ResponseBodyVO<String>> videoTask = new FutureTask<>(() -> videoService.generateVideo(projectId, projectType, maxSimulationTime, taskId));
|
|
new Thread(videoTask, "generateVideo-" + StringUtil.getRandomEightBitUUID()).start();
|
|
new Thread(videoTask, "generateVideo-" + StringUtil.getRandomEightBitUUID()).start();
|
|
}
|
|
}
|