java quartz 라이브러리를 이용하여 등록된 스케줄에 대하여 일주일 단위로 스케줄 실행이 지연되는 현상이 발생합니다.
눈에 띄는 에러메시지는 발생하지 않으며 특정 스케줄에 대해서 로그상으로 지연되는 현상을 확인할 수 있으며, 지연되었던 스케줄에 대하여 실행되어야할 api가 실패하는 결과가 일주일 단위로 반복되고 있습니다.
소스상으로는 synchronized(){} 처리된 부분이 실제 실행되어야할 api입니다.
구조적인 문제해결 혹은 개선방안에 대하여 도움을 얻고자 합니다.
감사합니다.
로그
[2016-04-11 07:05:00] INFO [JobWorker.java:39] IT_Daily_ilji started...(Period)
[2016-04-11 08:55:15] INFO [JobWorker.java:52] IT_Daily_ilji ended...(Period)
[2016-04-12 07:05:00] INFO [JobWorker.java:39] IT_Daily_ilji started...(Period)
[2016-04-12 07:19:10] INFO [JobWorker.java:52] IT_Daily_ilji ended...(Period)
[2016-04-13 07:05:00] INFO [JobWorker.java:39] IT_Daily_ilji started...(Period)
[2016-04-13 07:17:11] INFO [JobWorker.java:52] IT_Daily_ilji ended...(Period)
[2016-04-14 07:05:00] INFO [JobWorker.java:39] IT_Daily_ilji started...(Period)
[2016-04-14 07:17:25] INFO [JobWorker.java:52] IT_Daily_ilji ended...(Period)
[2016-04-15 07:05:00] INFO [JobWorker.java:39] IT_Daily_ilji started...(Period)
[2016-04-15 07:18:33] INFO [JobWorker.java:52] IT_Daily_ilji ended...(Period)
[2016-04-16 07:05:00] INFO [JobWorker.java:39] IT_Daily_ilji started...(Period)
[2016-04-16 07:19:09] INFO [JobWorker.java:52] IT_Daily_ilji ended...(Period)
[2016-04-17 07:05:00] INFO [JobWorker.java:39] IT_Daily_ilji started...(Period)
[2016-04-17 07:19:16] INFO [JobWorker.java:52] IT_Daily_ilji ended...(Period)
[2016-04-18 07:05:00] INFO [JobWorker.java:39] IT_Daily_ilji started...(Period)
[2016-04-18 08:48:25] INFO [JobWorker.java:52] IT_Daily_ilji ended...(Period)
문제가 되는 소스
public void execute(JobExecutionContext context)throws JobExecutionException{
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
String reportFile = dataMap.getString("ReportFile");
String reportName = dataMap.getString("ReportName");
String groupName = dataMap.getString("GroupName");
String reportSys = dataMap.getString("REPORT_SYS");
logger.info(reportName + " started...(Period)");
synchronized(JobWorker.class){
Creater creater = new Creater(reportName, reportSys);
//creater.setLogger(logger);
if(reportSys.equals("RD"))
creater.rdrun();
else
creater.run();
}
logger.info(reportName + " ended...(Period)");
}
quartz version
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.1
Created-By: 1.3.1_07-b02 (Sun Microsystems Inc.)
Built-By: jhouse
Main-Class: org.quartz.helpers.VersionPrinter
Sealed: false
Name: quartz
Implementation-Title: Quartz
Implementation-Version: 1.4.5 March 13 2005
Implementation-Vendor: The Quartz project developers.
Implementation-Vendor-URL: http://www.quartzscheduler.org
Specification-Title: Quartz
Specification-Version: 1.4
Specification-Vendor: The Quartz project developers.
Specification-Vendor-URL: http://www.quartzscheduler.org
Sealed: false
로그 내용 추가
날짜는 다르지만, 그 전 주 월요일에 해당하는 로그입니다.
[2016-04-04 07:05:00] INFO [JobWorker.java:39] IT_Daily_ilji started...(Period)
[2016-04-04 08:40:55] INFO [Creater.java:125] [IT_Daily_ilji]Report Create start...(Period)
[2016-04-04 08:40:55] INFO [Creater.java:587] [IT_Daily_ilji]Check gc.getTime :Sun Apr 03 08:40:55 KST 2016
[2016-04-04 08:40:55] INFO [Creater.java:396] [IT_Daily_ilji]rptEndTime : 20160403 rptStartTime : 20160403 Date ds : null rptFormat : pdf^xls^html^rtf^
[2016-04-04 08:40:55] INFO [JasperRunner.java:114] [IT_Daily_ilji]JVM cmd : ...............................................
[2016-04-04 08:40:56] INFO [JasperRunner.java:121] [IT_Daily_ilji]< PeriodicExporterJVM ... START >