martin 3 yıl önce
ebeveyn
işleme
96002ec359

+ 13 - 0
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/scheduler/TickScheduler.java

@@ -45,6 +45,19 @@ public class TickScheduler {
     @Value("${scheduler.score.password}")
     String passwordScore;
 
+
+//    @Scheduled(fixedDelay = 60 * 1000)
+//    public void retry() throws IOException {
+//
+//        //1 从 redis 获取 手动运行项目的 key 列表
+//        //2 根据 key 列表从 redis 获取 pod 列表
+//        //3 通过 kubernetes 获取 pod 列表
+//        //4 比对 redis 中的 pod 列表 和 kubernetes 中的 pod 列表,如果有 redis 中存在但 kubernetes 中不存在则准备重试
+//        //4-1 根据 key 列表从 mysql 获取任务列表
+//        //4-2 查看重试次数是否为 3
+//        //4-3 如果重试次数小于 3 则从 redis 获取 message 并重新发送给 kafka
+//    }
+
     @Scheduled(fixedDelay = 60 * 1000)
     public void tick() throws IOException {
 

+ 5 - 4
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/service/TaskService.java

@@ -184,7 +184,7 @@ public class TaskService {
             client.stop();
             return;
         }
-        projectMapper.updateProjectState(projectId, DictConstants.PROJECT_COMPLETED, TimeUtil.getNowForMysql());   // 修改该 project 的状态为已完成
+
         log.info("结束项目的 job");
         SshUtil.execute(session, "kubectl delete job project-" + projectId);
 
@@ -217,7 +217,7 @@ public class TaskService {
             log.info("TaskService--state 开始执行对第 " + (i + 1) + " 个叶子节点 " + indexId + " 进行打分!");
             String ruleName = indexTemplatePO.getRuleName();    // 打分脚本名称,例如 AEB_1-1
             String ruleDetails = indexTemplatePO.getRuleDetails();    // 打分脚本内容
-            String ruleFilePath = pyPath + "script/" + ruleName.split("_")[0] + "/" + ruleName + ".py";
+            String ruleFilePath = pyPath + "scripts/" + ruleName.split("_")[0] + "/" + ruleName + ".py";
             log.info("TaskService--state 将叶子节点 " + indexId + " 对应的打分规则保存到临时目录:" + ruleFilePath);
             FileUtil.writeInputStreamToLocalFile(IoUtil.stringToInputStream(ruleDetails), ruleFilePath);
 
@@ -233,7 +233,6 @@ public class TaskService {
                     String task2Id = task2.getId();
                     taskMapper.updateSuccessStateWithStopTime(task2Id, DictConstants.TASK_ANALYSING, TimeUtil.getNowForMysql());
                     // 计算每个任务的得分
-
                     String runResultMinio = task2.getRunResultFilePath() + "/Ego.csv";
                     String runResultLinux = linuxTempPath + runResultMinio;
 
@@ -348,7 +347,9 @@ public class TaskService {
         params.put("id", projectId);
         String post = HttpUtil.post(closeableHttpClient, requestConfig, evaluationLevelUri, headers, params);
         log.info("TaskService--state 访问仿真云平台评价等级接口:" + evaluationLevelUri + ",请求头为:" + headers + ",请求体为:" + params + "结果为:" + post);
-        log.info("TaskService--state 项目 " + projectId + " 打分完成");
+        log.info("TaskService--state 项目 " + projectId + " 打分完成!");
+        projectMapper.updateProjectState(projectId, DictConstants.PROJECT_COMPLETED, TimeUtil.getNowForMysql());   // 修改该 project 的状态为已完成
+        log.info("TaskService--state 项目 " + projectId + " 执行完成!");
         session.close();
         client.stop();