From c8e1a63d959815f5406fda1d514c597c212eb6c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A5=BF=E5=A4=A7=E9=94=90?= <1070211640@qq.com> Date: Mon, 29 Apr 2024 10:29:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ExperimentInstanceStatusTask.java | 19 ++++++++++++------- .../service/impl/DatasetServiceImpl.java | 1 + 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java index 80f66add..c1bfa662 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/scheduling/ExperimentInstanceStatusTask.java @@ -32,7 +32,7 @@ public class ExperimentInstanceStatusTask { private List experimentIds = new ArrayList<>(); @Scheduled(cron = "0/30 * * * * ?") // 每30S执行一次 public void executeExperimentInsStatus() throws IOException { - // 查到所有非终止态的实例 + // 首先查到所有非终止态的实验实例 List experimentInsList = experimentInsService.queryByExperimentIsNotTerminated(); // 去argo查询状态 List updateList = new ArrayList<>(); @@ -51,6 +51,8 @@ public class ExperimentInstanceStatusTask { experimentIds.add(experimentIns.getExperimentId()); // 线程安全的添加操作 } updateList.add(experimentIns); + + } experimentInsDao.update(experimentIns); } @@ -65,8 +67,10 @@ public class ExperimentInstanceStatusTask { if (experimentIds.size()==0){ return; } - List updateexperiments = new ArrayList<>(); + // 存储需要更新的实验对象列表 + List updateExperiments = new ArrayList<>(); for (Integer experimentId : experimentIds){ + // 获取当前实验的所有实例列表 List insList = experimentInsService.getByExperimentId(experimentId); List statusList = new ArrayList(); // 更新实验状态列表 @@ -75,16 +79,17 @@ public class ExperimentInstanceStatusTask { } String subStatus = statusList.toString().substring(1, statusList.toString().length() - 1); Experiment experiment = experimentDao.queryById(experimentId); + // 如果实验状态列表发生变化,则更新实验对象,并加入到需要更新的列表中 if (!StringUtils.equals(subStatus,experiment.getStatusList())){ 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) { - experimentIds.remove(index); // 线程安全的添加操作 + experimentIds.remove(index); // 线程安全的删除操作 } } } diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java index 04fd3dcc..25d2e7c0 100644 --- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java +++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/DatasetServiceImpl.java @@ -361,6 +361,7 @@ public class DatasetServiceImpl implements DatasetService { // Now we know there's another dataset with the same name Field[] fields = Dataset.class.getDeclaredFields(); + for (Field field : fields) { field.setAccessible(true); // Make private fields accessible