배치잡 수정시 clustered에 무조건 추가되는 버그 수정
eapim-admin CI / build (push) Has been cancelled

This commit is contained in:
eastargh
2026-06-17 10:58:00 +09:00
parent 161a68a0a2
commit bc478ad4ed
4 changed files with 49 additions and 16 deletions
@@ -15,4 +15,6 @@ public interface EMSScheduler {
void deleteAndAddJob(Scheduler scheduler, String jobName) throws SchedulerException, ClassNotFoundException; void deleteAndAddJob(Scheduler scheduler, String jobName) throws SchedulerException, ClassNotFoundException;
void reloadJob(String jobName) throws SchedulerException, ClassNotFoundException;
} }
@@ -120,6 +120,32 @@ public class EMSSchedulerImpl implements EMSScheduler {
} }
} }
@Override
public void reloadJob(String jobName) throws SchedulerException, ClassNotFoundException {
JobInfo jobInfo = jobInfoService.getById(jobName);
if (CLUSTERED.equals(jobInfo.getInstanceName())) {
reloadClusteredJob(jobInfo);
} else {
deleteAndAddJob(scheduler, jobInfo);
deleteJob(clusteredScheduler, jobName);
}
}
private void reloadClusteredJob(JobInfo jobInfo) throws SchedulerException, ClassNotFoundException {
TriggerKey triggerKey = new TriggerKey(getTriggerName(jobInfo.getId()), Scheduler.DEFAULT_GROUP);
Trigger existing = clusteredScheduler.getTrigger(triggerKey);
if (existing != null) {
CronTrigger newTrigger = newTrigger()
.withIdentity(triggerKey)
.withSchedule(cronSchedule(jobInfo.getCronExp()))
.build();
Date ft = clusteredScheduler.rescheduleJob(triggerKey, newTrigger);
log.info("{} rescheduled at: {} cron: {}", jobInfo.getId(), ft, jobInfo.getCronExp());
} else {
deleteAndAddJob(clusteredScheduler, jobInfo);
}
}
public void deleteJob(Scheduler inScheduler, String jobNm) throws SchedulerException { public void deleteJob(Scheduler inScheduler, String jobNm) throws SchedulerException {
JobKey key = new JobKey(jobNm, Scheduler.DEFAULT_GROUP); JobKey key = new JobKey(jobNm, Scheduler.DEFAULT_GROUP);
JobDetail jobDetail = inScheduler.getJobDetail(key); JobDetail jobDetail = inScheduler.getJobDetail(key);
@@ -45,6 +45,9 @@ public class SchedulerManController extends BaseAnnotationController {
@Qualifier("monitoringSyncAgent") @Qualifier("monitoringSyncAgent")
private MonitoringSyncAgent monitoringSyncAgent; private MonitoringSyncAgent monitoringSyncAgent;
@Autowired
private EMSScheduler emsScheduler;
@GetMapping(value = "/common/scheduler/schedulerMan.view") @GetMapping(value = "/common/scheduler/schedulerMan.view")
public String viewList() { public String viewList() {
return "/common/scheduler/schedulerMan"; return "/common/scheduler/schedulerMan";
@@ -96,6 +99,11 @@ public class SchedulerManController extends BaseAnnotationController {
@PostMapping(value = "/common/scheduler/schedulerMan.json", params = "cmd=UPDATE") @PostMapping(value = "/common/scheduler/schedulerMan.json", params = "cmd=UPDATE")
public ResponseEntity<Void> update(JobInfoUI jobInfoUI) { public ResponseEntity<Void> update(JobInfoUI jobInfoUI) {
service.update(jobInfoUI); service.update(jobInfoUI);
try {
emsScheduler.reloadJob(jobInfoUI.getId());
} catch (Exception e) {
logger.error("reloadJob error on current server", e);
}
syncReloadScheduler(jobInfoUI.getId()); syncReloadScheduler(jobInfoUI.getId());
return ResponseEntity.ok().build(); return ResponseEntity.ok().build();
} }
@@ -115,7 +123,7 @@ public class SchedulerManController extends BaseAnnotationController {
String url = "/monitoring/schedulerReload.do"; String url = "/monitoring/schedulerReload.do";
try { try {
ret = monitoringSyncAgent.sync(url, paramMap); ret = monitoringSyncAgent.targetSync(url, paramMap);
} catch (Exception e) { } catch (Exception e) {
logger.error("syncReloadScheduler error", e); logger.error("syncReloadScheduler error", e);
} finally { } finally {
@@ -1,10 +1,10 @@
package com.eactive.eai.rms.onl.common.controller; package com.eactive.eai.rms.onl.common.controller;
import com.eactive.eai.rms.common.interceptor.InterceptorSkipController; import java.util.HashMap;
import com.eactive.eai.rms.common.scheduler.EMSScheduler; import java.util.Map;
import com.eactive.eai.rms.onl.manage.adapter.spcftmadapter.AdapterJobInfo;
import com.eactive.eai.rms.onl.manage.adapter.spcftmadapter.AdapterSchedulerUtil; import javax.servlet.http.HttpServletRequest;
import com.eactive.eai.rms.onl.manage.adapter.spcftmadapter.SpcfTmAdapterDao;
import org.quartz.Scheduler; import org.quartz.Scheduler;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -15,9 +15,11 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest; import com.eactive.eai.rms.common.interceptor.InterceptorSkipController;
import java.util.HashMap; import com.eactive.eai.rms.common.scheduler.EMSScheduler;
import java.util.Map; import com.eactive.eai.rms.onl.manage.adapter.spcftmadapter.AdapterJobInfo;
import com.eactive.eai.rms.onl.manage.adapter.spcftmadapter.AdapterSchedulerUtil;
import com.eactive.eai.rms.onl.manage.adapter.spcftmadapter.SpcfTmAdapterDao;
@Controller @Controller
public class SchedulerReloadController implements InterceptorSkipController { public class SchedulerReloadController implements InterceptorSkipController {
@@ -34,19 +36,14 @@ public class SchedulerReloadController implements InterceptorSkipController {
private EMSScheduler emsScheduler; private EMSScheduler emsScheduler;
@Autowired @Autowired
@Qualifier("scheduler") @Qualifier("scheduler")
private Scheduler scheduler; private Scheduler scheduler;
@Autowired
@Qualifier("clusteredScheduler")
private Scheduler clusteredScheduler;
@RequestMapping("/schedulerReload.do") @RequestMapping("/schedulerReload.do")
public ResponseEntity<Map<String, Object>> rmsSchedulerReload(String jobName) { public ResponseEntity<Map<String, Object>> rmsSchedulerReload(String jobName) {
Map<String, Object> result = new HashMap<>(); Map<String, Object> result = new HashMap<>();
try { try {
emsScheduler.deleteAndAddJob(scheduler, jobName); emsScheduler.reloadJob(jobName);
emsScheduler.deleteAndAddJob(clusteredScheduler, jobName);
result.put("status", "success"); result.put("status", "success");
} catch (Exception e) { } catch (Exception e) {
logger.error("", e); logger.error("", e);