|
|
@@ -32,7 +32,7 @@ public class ExperimentInstanceStatusTask { |
|
|
private List<Integer> experimentIds = new ArrayList<>(); |
|
|
private List<Integer> experimentIds = new ArrayList<>(); |
|
|
@Scheduled(cron = "0/30 * * * * ?") // 每30S执行一次 |
|
|
@Scheduled(cron = "0/30 * * * * ?") // 每30S执行一次 |
|
|
public void executeExperimentInsStatus() throws IOException { |
|
|
public void executeExperimentInsStatus() throws IOException { |
|
|
// 查到所有非终止态的实例 |
|
|
|
|
|
|
|
|
// 首先查到所有非终止态的实验实例 |
|
|
List<ExperimentIns> experimentInsList = experimentInsService.queryByExperimentIsNotTerminated(); |
|
|
List<ExperimentIns> experimentInsList = experimentInsService.queryByExperimentIsNotTerminated(); |
|
|
// 去argo查询状态 |
|
|
// 去argo查询状态 |
|
|
List<ExperimentIns> updateList = new ArrayList<>(); |
|
|
List<ExperimentIns> updateList = new ArrayList<>(); |
|
|
@@ -51,6 +51,8 @@ public class ExperimentInstanceStatusTask { |
|
|
experimentIds.add(experimentIns.getExperimentId()); // 线程安全的添加操作 |
|
|
experimentIds.add(experimentIns.getExperimentId()); // 线程安全的添加操作 |
|
|
} |
|
|
} |
|
|
updateList.add(experimentIns); |
|
|
updateList.add(experimentIns); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
experimentInsDao.update(experimentIns); |
|
|
experimentInsDao.update(experimentIns); |
|
|
} |
|
|
} |
|
|
@@ -65,8 +67,10 @@ public class ExperimentInstanceStatusTask { |
|
|
if (experimentIds.size()==0){ |
|
|
if (experimentIds.size()==0){ |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
List<Experiment> updateexperiments = new ArrayList<>(); |
|
|
|
|
|
|
|
|
// 存储需要更新的实验对象列表 |
|
|
|
|
|
List<Experiment> updateExperiments = new ArrayList<>(); |
|
|
for (Integer experimentId : experimentIds){ |
|
|
for (Integer experimentId : experimentIds){ |
|
|
|
|
|
// 获取当前实验的所有实例列表 |
|
|
List<ExperimentIns> insList = experimentInsService.getByExperimentId(experimentId); |
|
|
List<ExperimentIns> insList = experimentInsService.getByExperimentId(experimentId); |
|
|
List<String> statusList = new ArrayList<String>(); |
|
|
List<String> statusList = new ArrayList<String>(); |
|
|
// 更新实验状态列表 |
|
|
// 更新实验状态列表 |
|
|
@@ -75,16 +79,17 @@ public class ExperimentInstanceStatusTask { |
|
|
} |
|
|
} |
|
|
String subStatus = statusList.toString().substring(1, statusList.toString().length() - 1); |
|
|
String subStatus = statusList.toString().substring(1, statusList.toString().length() - 1); |
|
|
Experiment experiment = experimentDao.queryById(experimentId); |
|
|
Experiment experiment = experimentDao.queryById(experimentId); |
|
|
|
|
|
// 如果实验状态列表发生变化,则更新实验对象,并加入到需要更新的列表中 |
|
|
if (!StringUtils.equals(subStatus,experiment.getStatusList())){ |
|
|
if (!StringUtils.equals(subStatus,experiment.getStatusList())){ |
|
|
experiment.setStatusList(subStatus); |
|
|
experiment.setStatusList(subStatus); |
|
|
updateexperiments.add(experiment); |
|
|
|
|
|
|
|
|
updateExperiments.add(experiment); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
if (updateexperiments.size() > 0) { |
|
|
|
|
|
experimentDao.insertOrUpdateBatch(updateexperiments); |
|
|
|
|
|
for (int index = 0; index < updateexperiments.size(); index++) { |
|
|
|
|
|
|
|
|
if (!updateExperiments.isEmpty()) { |
|
|
|
|
|
experimentDao.insertOrUpdateBatch(updateExperiments); |
|
|
|
|
|
for (int index = 0; index < updateExperiments.size(); index++) { |
|
|
synchronized (experimentIds) { |
|
|
synchronized (experimentIds) { |
|
|
experimentIds.remove(index); // 线程安全的添加操作 |
|
|
|
|
|
|
|
|
experimentIds.remove(index); // 线程安全的删除操作 |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|