저작권 및 면책 조항
(주)포스코ICT가 제공하는 본 문서는 기술상의 부정확함 또는 글자 상의 오류를 포함하고 있으며, (주)포스코ICT는 여기에 관한 어떠한 책임도 지지 않습니다.
본 문서의 내용은 정기적으로 변경 또는 추가 될 수 있습니다.
본 문서는 저작권법의 보호를 받으며, 어떠한 상황에서도 (주)포스코ICT의 사전승인 없이 임의로 무단 복사 또는 복제하여 배포할 수 없습니다.
본 문서의 내용에 대한 수정사항 또는 문의사항은 LM포털의 Q&A 게시판을 통해 접수받으며, 별도 공지없이 반영됨을 알려드립니다.
Glue Job Scheduler 란
Glue Job Scheduler는 Glue Framework 4기반의 패키지 입니다.
Glue Job Scheduler는 Manager 모듈(화면)과 Server 모듈(NIO 서버)로 구성되어 있습니다.
Meta Data for Scheduled Job
기타
-
DB 변경 history
- 2015.05 : GlueService Meta 관리 table 5개 생성
- 2015.06.04 : 법인코드 추가
- 2015.06.16 : Scheduler Job 관리 Table 4개 신규
- 2015.06.25 : history 관리 Table 2개 추가 외 수정
- 2015.08.07 : 권한관리 Table 3개 추가 외 수정
- 2015.08.24 : GlueService Meta 버전관리 Table 5종 변경
- 2015.09.18 : Table명, Column명의 TRIGER -> TRIGGER로 변경, history 관리 Table 수정
- 2015.11.18 : Running중인 Job을 Kill하기 위한 Java Process ID 저장 컬럼 추가
- 2016.02.26 : 권한관리 Table 변경 ( GlueSecurity 3 참고 )
Column명 변경 JOB_CLASSS -> JOB_CLASS
recovery를 위한 JobStore용 Table 추가
-
glue-scheduler-job
- 1.0.0 : 최초 생성
- 1.1.0 : interface ( com.posco.glue.cm.PoscoSchedulerJob 추가 )
- 1.1.1 : Logging 개선 ( com.posco.mes.reuse.common.logging.PosLogger 가 먼저 동작되도록 )
- 1.1.2 : Job 상태 체크 Util 클래스 추가.
com.posco.glue.cm.DefaultSchedulerJob 클래스 추가.
- 1.1.3 : 특수문자(@)가 포함된 JobData 처리 오류
ex> DataType=String, DataKey=filePath, Data=/EAI2/uCUBE/service/http/filein/ACGRB426@ERPH.M12C.FS01.dat
==> Java명령어 생성시 argument 부분이 filePath=/EAI2/uCUBE/service/http/filein/ACGRB426@ERPH.M12C.FS01.dat@S 으로 생성됨
==> Job실행시 argument 부분을 통해 GlueContext을 구성하기 위해 split( "=" )과 split( "@" ) 가 사용되어 Data 값이 누락되었음.
- 1.2.0 : com.posco -> com.poscoit package로 변경.( deprecated )
com.posco.glue.cm.util.PoscoJobStatusCheck -> com.poscoict.app.job.GlueJobStatusCheck 으로 변경함
com.posco.glue.cm.DefaultSchedulerJob -> com.poscoict.app.job.GlueSimpleJob 으로 변경함
com.posco.glue.cm.PoscoSchedulerJob -> com.poscoict.app.job.GlueJob 으로 변경함
com.posco.glue.cm.JobConstants -> com.poscoict.app.job.JobConstants 으로 변경함
com.posco.glue.cm.util.PoscoJobStatusCheck -> com.poscoict.app.job.GlueJobStatusCheck 으로 변경함
-
glue-scheduler-server
- 1.0.0 : 최초 생성
- 1.1.0
- 1.1.1 : Job Kill 기능 추가
- 1.1.2 : Trigger 의 start time, end time 추가.
- 1.1.3
- shutdown hook
- incompatible
- log file 경로 변경 ( {directory}/{job key}/{triger key}/{job name}_{fired tiem}.log )
Job 호출시 trigger key 가 DEFAULT.MT_zskd85gmko5w 형태로 발생되 log file 디렉토리 경로에 너무 많아짐. DEFAULT로 통합함.
- Job 호출시 ( GlueJobEventSender 이용 ) Job실행이력 ID 를 return 하도록 함.
Job실행이력 ID를 통해 Job 상태를 확인할 수있음.
- 1.1.4
- Job실행시 로그파일이 2개 이상인 경우를 대비해 로그파일 목록 처리
- Job이 Running 중에도 log를 볼 수 있도록 history data 생성 로직 변경.
- 한글깨짐 관련 인코딩 설정 로직 추가
- 1.1.5
- SmartFactory - PPAS 검증 완료
- 1.2.0
- log파일 purge 기능 추가.
- server 상태 체크시, version 확인 가능
- 시작시간과 종료시간이 주어진 Trigger는 그 상태를 N으로 변경하도록 함.
- Job 실행시 log 파일 생성 오류 보완
2016-02-16 12:30:32,536 [scheduler_Worker-3] ERROR com.posco.glue.server.cm.PoscoJob - IOException
java.io.FileNotFoundException: /SCH/TKSFNR/logs/TKSFNR_SERVICE_JG.TKSFNR_SERVICE_JN/DEFAULT/TKSFNR_SERVICE_JN_20160216123032.log (No such file or directory)
at java.io.FileOutputStream.open(Native Method) ~[na:1.7.0_71]
at java.io.FileOutputStream.<init>(FileOutputStream.java:221) ~[na:1.7.0_71]
at java.io.FileOutputStream.<init>(FileOutputStream.java:142) ~[na:1.7.0_71]
at java.io.FileWriter.<init>(FileWriter.java:78) ~[na:1.7.0_71]
at com.posco.glue.server.cm.PoscoJob.createLogFile(PoscoJob.java:287) [scheduler-server.jar:1.1.5]
at com.posco.glue.server.cm.PoscoJob.execute(PoscoJob.java:95) [scheduler-server.jar:1.1.5]
at org.quartz.core.JobRunShell.run(JobRunShell.java:202) [quartz-2.2.1.jar:na]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) [quartz-2.2.1.jar:na]
- 1.2.1
- Job실행 요청을 받았을 경우의 Quartz Scheduler에 없는 Job일 경우
DB에서 Job정보 조회시 STATUS 조건 추가.
- 1.2.2
- scheduler-server/conf/logback.xml 수정
- Job 실행시 엔진로그에 남는 로그메시지 처리 기준 변경
java.util.logging와 log4j(또는 logback) 이 같이 사용되는 경우, java.util.logging은 Scheduler Server 엔진에서 처리됨
scheduler-server.log 또는 scheduler-server.out 에 출력되도록 함.
- Job 실행시 JobData 의 type이 Auto(A) 인 경우, 시스템현재시각 으로 설정하는 기능 추가
- Quartz Scheduler 에 등록된 Job/Trigger 정보 생성시 Trigger일 경우 JobKey 정보 추가 편성
-
glue-scheduler-manager
- 1.0.0 : 최초생성
- 1.1.0 : scheduler meta 관리 화면 추가
- 1.2.0 : Grid 수정 dialog에 readonly 속성 추가
- 1.2.1 : Job Kill 기능 추가
- 1.2.2 : Trigger 의 start time, end time 추가.
- 1.2.3
- 화면의 font size 좀더 작게 2px 정도 줄임.
- 브라우저의 언어설정에 따라 404 Not Found 에러 발생하여 허용 언어코드 추가 ( en, ko ).
- Scheduler Server 화면의 검색 기능이 동작하지 않아 조치함.
- Job History 화면에서 ERROR 난 JOB을 refire 할 경우, JobData를 재사용 할수 있도록 수정.
- 1.2.4
- Job실행시 Log 파일이 여러개인 경우 화면에서 로그 파일별 링크를 두어 로그 확인하기.
- Job이 Running 중에도 log를 볼 수 있도록 함.
- Excel Export( Job 정보를 엑셀로 내려받는 기능 )
- 한글깨짐
- 1.2.5
- SmartFactory - PPAS 검증 완료
- 1.3.0
- 관리자, 운영자, 사용자 구분
체인별 Data 수정 권한 부여해서 체인의 Job 정보만 수정할 수 있습니다.
- 패스워드 암호화
SQL( select USER_ID, PASSWORD from USERS ) 실행결과 패스워드을 알수 없음.
- 상단 메뉴 개선
- Scheduler Server 페이지에서 Job 실행, Job삭제, Trigger 활성화 등의 이벤트 수행 결과를 alert 창으로 변경
- 1.3.1
- History 화면에서 Status 셀을 더블클릭할 경우,
RUNNING 인 경우는 실행중인 Job을 중지할 수 있고,
ERROR 인 경우는 Job을 재 실행 시킬수 있도록 함.
- 권한관리 화면의 SecurityReload 시, Resource 정보가 갱신되도록 보완.
- History 화면의 Runtime 표현방식을 millisecond(ms)에서 시:분:초(hh:mi:ss) 로 변경.
- MetaData 화면의 JobData의 DataType에 Auto(A) 추가
Auto일경우 Data Value 에는 날짜 표현방식(ex, "yyyyMMdd")을 입력하면 됨.
Job 실행시 현재시각이 해당 표현식의 문자열로 생성됨.
- Server 화면에서 Scheduler Server 그리드의 subGrid 의 더블클릭 이벤트 추가
Job일 경우는 QuartzScheduelr에서 해당 Job을 제거함. MetaData 화면에서 Job정보 수정 가능해짐.
Trigger일 경우는 QuartzScheduelr에서 해당 Trigger를 제거함. MetaData 화면에서 Trigger정보 수정 가능해짐.
- Server 화면에서 Scheduler Server 그리드의 subGrid 의 Data 구성시, 검색조건(Job Key) 사용되도록 함.
- Server 화면의 Job 목록 그리드에 subGrid 추가함.
FireJob 실행시, subGrid에는 해당 Job의 JobData를 변경해서 Job을 호출할 수 있음.
- QuartzScheduler 와의 이벤트 처리 결과 Message( alert 메시지 포함 ) 수정.
- Excel Export 시, 셀 너비 개선, Header 개선
권한관리는 "Auth-날짜.xlsx" 로 생성
Job등록정보는 "Scheduler-날짜.xlsx" 로 생성
- MetaData 화면에서 Job 신규 등록시 기존 Job 복제기능 추가.
manager 검토
부여된 ip가 여러개일 경우 - http://stackoverflow.com/questions/494465/how-to-enumerate-ip-addresses-of-all-enabled-nic-cards-from-java
cluster 관련 JobStore용 DB가 있는 경우 여러 instance가 같이 사용하면 안됨.
server 검토
accepted.ip가 아닐 경우, data 수정시 JsonParseException 발생.
job 정보 복제
session time out