본문 바로가기

개발/java

Spring Batch + MSSQL 실행과정 FLOW 파헤치기, meta db 접근순서

서론

회사에서 스프링 배치 프로그램을 배포하는데 매우 안된다.

답답해서 범인을 찾기 위해 일일히 트래킹하며 작성해보기

 

과정

SQL 메타테이블 기준 접근 순서

1. JOB_INSTANCE (ID 값 가장 큰거 SELECT)

2. JOB_EXECUTION (ID 값 가장 큰거 SELECT)

3. JOB_EXECUTION_PARAMS (이전 단계에서 불러온 ID 값으로 불러오기)

4. JOB_INSTANCE+JOB_EXECUTION 합쳐서 데이터 생성

5. STEP_EXECUTION  (이전 단계에서 불러온 JOB ID 값으로 관련 STEP 다 불러오기)

6. JOB_EXECUTION_CONTEXT  (이전 단계에서 불러온 ID 값으로 불러오기)

7. STEP_EXECUTION_CONTEXT  (이전 단계에서 불러온 STEP ID 값으로 불러오기, STEP 수 만큼 SELECT)

8. JOB_INSTANCE 다시 여러번 SELECT

9. JOB_SEQ 다음번호 생성

10. JOB_INSTANCE 새로 생성 INSERT 

11. JOB_EXECUTION_SEQ 다음번호 생성

12. JOB_EXECUTION 새로 생성 INSERT (여기서 START_TIME 은 NULL 로 들어가고, 나중에 UPDATE 한다. SCDF+MSSQL 에서 테이블을 생성할때 NOT NULL 로 생성하는 오류가 있다.)

13. JOB_EXECUTION_CONTEXT 새로 생성 INSERT 

14. JOB_EXECUTION 다시 SELECT

15. JOB_EXECUTION UPDATE ( STATUS 가 STARTING 에서 STARTED 로 바뀜, START_TIME 업데이트 )

16. TASK_TASK_BATCH 새로 생성 INSERT

17. JOB_EXECTION, STEP_EXECUTION 합쳐서 데이터 생성

18. STEP_EXECUTION_SEQ 다음번호 생성

19.  STEP_EXECUTION 새로 생성 INSERT ( STARTING 단계, START_TIME = NULL )

20. STEP_EXECUTION_CONTEXT 생성

21. STEP_EXECUTION UPDATE ( STARTED, START_TIME 업데이트 )

22. JOB_EXECUTION 에서 VERSION SELECT

23. STEP 로직 실행 (before step, 메인 로직, after step, 어떤 변화가 있을떄마다 COMMIT_COUNT와 VERSION 숫자가 1씩 증가하며 UPDATE 한다 )

24. STEP 속 STATUS 와 EXIT_CODE 가 COMPLETED 로 바뀐다.

25. JOB_EXECUTION 에서 VERSION SELECT

26. JOB_EXECUTION_CONTEXT UPDATE

27. 17 번으로 돌아가 STEP 의 수 만큼 반복한다.

28. 모든 STEP 이 COMPLETE 되면, JOB_EXECUTION_CONTEXT 업데이트

29. JOB_EXECUTION 을 COMPLETED 로 UPDATE

30. TASK_EXECUTION 의 END_TIME 기입

31. TASK_EXECUTION, TASK_EXECUTION_PARAMS 값을 SELECT

결말

정말 허무하게도...

application.yml 에서 job-enable:false 하나 없애니 해결 됐다....

쉣...

반응형