diff --git a/src/main/java/com/interplug/qcast/batch/JobLauncherController.java b/src/main/java/com/interplug/qcast/batch/JobLauncherController.java index eb4fd3d5..f9a904d0 100644 --- a/src/main/java/com/interplug/qcast/batch/JobLauncherController.java +++ b/src/main/java/com/interplug/qcast/batch/JobLauncherController.java @@ -170,31 +170,35 @@ public class JobLauncherController { * 공통 스케줄러 실행 메소드 */ private String executeScheduledJob(String jobName) { + // 1. 가장 먼저 스케줄러 설정 확인 + if (!"Y".equals(scheduler) && !"materialJob".equals(jobName) && !"commonCodeJob".equals(jobName)) { + log.info("Scheduler disabled, skipping job {}", jobName); + return "Scheduler disabled"; + } + + // 2. Job 존재 확인 Job job = jobs.get(jobName); if (job == null) { log.error("Job {} not found", jobName); return "Job " + jobName + " not found"; } - if (!"Y".equals(scheduler) && !"materialJob".equals(jobName) && !"commonCodeJob".equals(jobName)) { - log.info("Scheduler disabled, skipping job {}", jobName); - return "Scheduler disabled"; - } - - // 실행 중인 Job 확인 - if (runningJobs.contains(jobName) || isJobRunning(jobName)) { - log.warn("Job {} is already running, skipping execution", jobName); - return "Job already running"; - } - - // 다른 Job이 실행 중인지 확인 + // 3. 다른 Job 실행 중인지 확인 if (isAnyJobRunning()) { log.warn("Another job is running, skipping job {}", jobName); return "Another job is running"; } + // 4. 같은 Job이 실행 중인지 확인 + if (runningJobs.contains(jobName) || isJobRunning(jobName)) { + log.warn("Job {} is already running", jobName); + return "Job already running"; + } + + // 5. Job 실행 try { runningJobs.add(jobName); + log.info("Starting job {}", jobName); JobParameters jobParameters = new JobParametersBuilder() .addDate("time", new Date())