LingxinMeng 1 年之前
父節點
當前提交
54a3e74f7f

+ 3 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/app/service/ProjectApplicationService.java

@@ -34,6 +34,7 @@ import org.springframework.kafka.core.KafkaTemplate;
 import org.springframework.kafka.support.SendResult;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.io.File;
@@ -802,7 +803,7 @@ public class ProjectApplicationService {
         //1 判断项目是否已经运行
         projectRunningKeySet = RedisUtil.getKeySetByPrefix(stringRedisTemplate, projectRunningKeyPrefix);
         isRunning = !CollectionUtil.isEmpty(projectRunningKeySet);
-        //2 将项目状态修改为终止中
+        //2 ----------------------------------------------------- 将项目状态修改为终止中
         if (DictConstants.PROJECT_TYPE_MANUAL.equals(projectType)) {
             projectEntity = simulationManualProjectMapper.selectById(projectId);
             simulationManualProjectMapper.updateProjectState(projectId, DictConstants.PROJECT_TERMINATING, TimeUtil.getNowForMysql());
@@ -857,6 +858,7 @@ public class ProjectApplicationService {
         MinioUtil.rmR(minioClient, bucketName, projectResultPathOfMinio + projectId + "/");
 
         log.info("项目 " + projectId + " 终止成功!");
+        // ----------------------------------------------------------- 修改状态为已终止
         if (DictConstants.PROJECT_TYPE_MANUAL.equals(projectType)) {
             simulationManualProjectMapper.updateProjectState(projectId, DictConstants.PROJECT_TERMINATED, TimeUtil.getNowForMysql());
         } else {

+ 0 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/app/service/TaskApplicationService.java

@@ -91,7 +91,6 @@ public class TaskApplicationService {
                 simulationManualProjectTaskMapper.updateStateWithStartTime(taskId, state, TimeUtil.getNowForMysql());
                 return;
             } else { // 结束的 pod 都直接删除,并判断项目是否完成
-                // -------------------------------- 处理状态 --------------------------------
                 log.info("修改任务 {} 的状态为 {} ,pod 名称为 {} ,并删除 pod。", taskId, state, podName);
                 if (DictConstants.TASK_ABORTED.equals(state)) {
                     String minioPathOfErrorLog = resultPathMinio + projectId + "/" + taskId + "error.log";

+ 3 - 2
simulation-resource-server/src/main/java/com/css/simulation/resource/server/app/impl/SimulationProjectServiceImpl.java

@@ -277,12 +277,13 @@ public class SimulationProjectServiceImpl implements SimulationProjectService {
         projectDetailsVO.setAlgorithmScoreList(new ArrayList<>());
         log.info("项目 " + oldProjectId + " 的详情信息为:" + projectDetailsVO);
 
-        if (DictConstants.PROJECT_TERMINATED.equals(newState)) {
+        if (DictConstants.PROJECT_TERMINATED.equals(newState)) {// 终止项目
             projectDetailsVO.setNowRunState(DictConstants.PROJECT_TERMINATED);
             projectDetailsVO.setNowRunStateName(DictConstants.PROJECT_TERMINATED_NAME);
             String projectDetailsVOJson = JsonUtil.beanToJson(projectDetailsVO);
             oldProjectPO.setDetails(projectDetailsVOJson);
-            simulationManualProjectMapper.updateDetailsAndNowRunStateById(oldProjectId, projectDetailsVOJson, DictConstants.PROJECT_TERMINATED);
+            // 状态先改为终止中,等待调度程序实际终止
+            simulationManualProjectMapper.updateDetailsAndNowRunStateById(oldProjectId, projectDetailsVOJson, DictConstants.PROJECT_TERMINATING);
             projectStopToKafka(oldProjectPO);
         } else if (DictConstants.PROJECT_RUNNING.equals(newState)) {
             projectDetailsVO.setNowRunState(DictConstants.PROJECT_RUNNING);