Browse Source

Merge branch 'dev' of https://gitlink.org.cn/ci4s/ci4sManagement-cloud into optimus

pull/42/head
liu2592603532 1 year ago
parent
commit
ebd6d94f40
2 changed files with 18 additions and 8 deletions
  1. +17
    -8
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java
  2. +1
    -0
      ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java

+ 17
- 8
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java View File

@@ -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<>();
@@ -47,8 +47,12 @@ public class ExperimentInstanceStatusTask {
} }
if (!StringUtils.equals(oldStatus,experimentIns.getStatus())){ if (!StringUtils.equals(oldStatus,experimentIns.getStatus())){
experimentIns.setUpdateTime(new Date()); experimentIns.setUpdateTime(new Date());
experimentIds.add(experimentIns.getExperimentId());
synchronized (experimentIds) {
experimentIds.add(experimentIns.getExperimentId()); // 线程安全的添加操作
}
updateList.add(experimentIns); updateList.add(experimentIns);


} }
experimentInsDao.update(experimentIns); experimentInsDao.update(experimentIns);
} }
@@ -63,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>();
// 更新实验状态列表 // 更新实验状态列表
@@ -73,15 +79,18 @@ 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++) {
experimentIds.remove(index);
if (!updateExperiments.isEmpty()) {
experimentDao.insertOrUpdateBatch(updateExperiments);
for (int index = 0; index < updateExperiments.size(); index++) {
synchronized (experimentIds) {
experimentIds.remove(index); // 线程安全的删除操作
}
} }
} }
} }


+ 1
- 0
ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java View File

@@ -361,6 +361,7 @@ public class DatasetServiceImpl implements DatasetService {


// Now we know there's another dataset with the same name // Now we know there's another dataset with the same name
Field[] fields = Dataset.class.getDeclaredFields(); Field[] fields = Dataset.class.getDeclaredFields();

for (Field field : fields) { for (Field field : fields) {
field.setAccessible(true); // Make private fields accessible field.setAccessible(true); // Make private fields accessible




Loading…
Cancel
Save