From 78672c9918a60561ef3656f56ea00f30858546d7 Mon Sep 17 00:00:00 2001 From: ysCha Date: Wed, 23 Jul 2025 15:57:27 +0900 Subject: [PATCH] =?UTF-8?q?=EB=91=90=20=EC=9D=B8=EC=8A=A4=ED=84=B4?= =?UTF-8?q?=EC=8A=A4=EA=B0=80=20=EB=8D=B0=EC=9D=B4=ED=84=B0=EB=B2=A0?= =?UTF-8?q?=EC=9D=B4=EC=8A=A4=EB=A5=BC=20=ED=86=B5=ED=95=B4=20=EC=8B=A4?= =?UTF-8?q?=EC=A0=9C=20job=20=EC=8B=A4=ED=96=89=20=EC=83=81=ED=83=9C?= =?UTF-8?q?=EB=A5=BC=20=EC=A0=95=ED=99=95=ED=9E=88=20=ED=99=95=EC=9D=B8?= =?UTF-8?q?=EA=B0=80=EB=8A=A5=20=EB=B3=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qcast/batch/JobLauncherController.java | 38 ++++++++++--------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/interplug/qcast/batch/JobLauncherController.java b/src/main/java/com/interplug/qcast/batch/JobLauncherController.java index 438bb19e..bb529e5d 100644 --- a/src/main/java/com/interplug/qcast/batch/JobLauncherController.java +++ b/src/main/java/com/interplug/qcast/batch/JobLauncherController.java @@ -32,8 +32,6 @@ public class JobLauncherController { @Value("${spring.profiles.scheduler}") private String scheduler; - // 현재 실행 중인 Job 추적을 위한 Set - private final Set runningJobs = ConcurrentHashMap.newKeySet(); /** * 특정 Job을 매핑으로 실행하는 메소드 * @@ -59,31 +57,35 @@ public class JobLauncherController { return resultMap; } - // 실행 중인 Job 확인 - if (runningJobs.contains(jobName) || isJobRunning(jobName)) { + // 실행 중인 Job 확인 (데이터베이스 기반) + if (isJobRunning(jobName)) { log.warn("Job {} is already running, skipping execution", jobName); resultMap.put("code", "FAILED"); resultMap.put("message", "Job "+ jobName +" is already running, skipping execution"); return resultMap; } + try { + log.info("Starting job: {}", jobName); - JobParameters jobParameters = new JobParametersBuilder().addString("jobName", jobName) - .addDate("time", new Date()).toJobParameters(); + JobParameters jobParameters = new JobParametersBuilder().addString("jobName", jobName) + .addDate("time", new Date()).toJobParameters(); - JobExecution jobExecution = jobLauncher.run(job, jobParameters); + JobExecution jobExecution = jobLauncher.run(job, jobParameters); + BatchStatus status = jobExecution.getStatus(); + ExitStatus exitStatus = jobExecution.getExitStatus(); + resultMap.put("code", status.toString()); + resultMap.put("message", exitStatus.getExitDescription()); - BatchStatus status = jobExecution.getStatus(); - ExitStatus exitStatus = jobExecution.getExitStatus(); - - resultMap.put("code", status.toString()); - resultMap.put("message", exitStatus.getExitDescription()); - - - // return "Job " + jobName + " started"; - return resultMap; + // return "Job " + jobName + " started"; + return resultMap; + } catch (Exception e) { + resultMap.put("code", "FAILED"); + resultMap.put("message", e.getMessage()); + return resultMap; + } } /** @@ -223,8 +225,8 @@ public class JobLauncherController { return "Scheduler disabled"; } - // 실행 중인 Job 확인 - if (runningJobs.contains(jobName) || isJobRunning(jobName)) { + // 실행 중인 Job 확인 (데이터베이스 기반) + if (isJobRunning(jobName)) { log.warn("Job {} is already running, skipping execution", jobName); return "Job already running"; }