저작권 및 면책 조항

(주)포스코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

그림 : Architecuture
Scheduler

기타

  • 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-manager

    • 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]
        
  • glue-scheduler-server

    • 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 창으로 변경

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