From 3206e485cf1c349e41efa6cb1755851d238e6589 Mon Sep 17 00:00:00 2001 From: jsonwan Date: Mon, 14 Oct 2024 14:32:34 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=9B=E5=BB=BA=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E5=8F=82=E6=95=B0=E6=A0=A1=E9=AA=8C=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=20#3245?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CronJobServiceImpl.java | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/src/backend/job-crontab/service-job-crontab/src/main/java/com/tencent/bk/job/crontab/service/impl/CronJobServiceImpl.java b/src/backend/job-crontab/service-job-crontab/src/main/java/com/tencent/bk/job/crontab/service/impl/CronJobServiceImpl.java index 40d0ed1cef..02d527f202 100644 --- a/src/backend/job-crontab/service-job-crontab/src/main/java/com/tencent/bk/job/crontab/service/impl/CronJobServiceImpl.java +++ b/src/backend/job-crontab/service-job-crontab/src/main/java/com/tencent/bk/job/crontab/service/impl/CronJobServiceImpl.java @@ -221,6 +221,8 @@ public CronJobInfoDTO createCronJobInfo(String username, CronJobInfoDTO cronJobI checkCronJobPlanOrScript(cronJobInfo); saveSnapShotForHostVaiableValue(cronJobInfo); + // 有执行方案运行权限,才能用该执行方案创建定时任务 + authExecuteTask(cronJobInfo); cronJobInfo.setCreateTime(DateUtils.currentTimeSeconds()); cronJobInfo.setEnable(false); @@ -253,23 +255,11 @@ public CronJobInfoDTO updateCronJobInfo(String username, CronJobInfoDTO cronJobI processCronJobVariableValueMask(cronJobInfo); if (cronJobInfo.getEnable()) { - try { - List taskVariables = null; - if (CollectionUtils.isNotEmpty(cronJobInfo.getVariableValue())) { - taskVariables = - cronJobInfo.getVariableValue().parallelStream() - .map(CronJobVariableDTO::toServiceTaskVariable).collect(Collectors.toList()); - } - executeTaskService.authExecuteTask(cronJobInfo.getAppId(), cronJobInfo.getTaskPlanId(), - cronJobInfo.getId(), cronJobInfo.getName(), taskVariables, cronJobInfo.getLastModifyUser()); - if (cronJobDAO.updateCronJobById(cronJobInfo)) { - informAllToAddJobToQuartz(cronJobInfo.getAppId(), cronJobInfo.getId()); - } else { - throw new InternalException(ErrorCode.UPDATE_CRON_JOB_FAILED); - } - } catch (TaskExecuteAuthFailedException e) { - log.error("Error while pre auth cron execute!", e); - throw e; + authExecuteTask(cronJobInfo); + if (cronJobDAO.updateCronJobById(cronJobInfo)) { + informAllToAddJobToQuartz(cronJobInfo.getAppId(), cronJobInfo.getId()); + } else { + throw new InternalException(ErrorCode.UPDATE_CRON_JOB_FAILED); } } else { if (cronJobDAO.updateCronJobById(cronJobInfo)) { @@ -289,6 +279,22 @@ public CronJobInfoDTO updateCronJobInfo(String username, CronJobInfoDTO cronJobI return updateCron; } + private void authExecuteTask(CronJobInfoDTO cronJobInfo){ + try { + List taskVariables = null; + if (CollectionUtils.isNotEmpty(cronJobInfo.getVariableValue())) { + taskVariables = + cronJobInfo.getVariableValue().parallelStream() + .map(CronJobVariableDTO::toServiceTaskVariable).collect(Collectors.toList()); + } + executeTaskService.authExecuteTask(cronJobInfo.getAppId(), cronJobInfo.getTaskPlanId(), + cronJobInfo.getId(), cronJobInfo.getName(), taskVariables, cronJobInfo.getLastModifyUser()); + } catch (TaskExecuteAuthFailedException e) { + log.error("Error while pre auth cron execute!", e); + throw e; + } + } + /** * 保存定时任务主机变量中的IP等快照信息 *