서론
회사에서 스프링 배치 프로그램을 배포하는데 매우 안된다.
답답해서 범인을 찾기 위해 일일히 트래킹하며 작성해보기
과정
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 하나 없애니 해결 됐다....
쉣...
'개발 > java' 카테고리의 다른 글
Spring Batch 5 JdbcBatchItemWriter itemPreparedStatementSetter is null 에러 (1) | 2024.11.29 |
---|---|
중복 맞이 중복코드 최소화 (0) | 2024.07.25 |
build.gradle, settings.gradle, properties 차이? 역할? 알아보기 (0) | 2024.04.16 |
Spring Actuator 로 Custom Endpoint 등록 및 변수 전달 (0) | 2024.03.19 |
포장을 못하면 개발을 못해요 (API 유지보수성 극대화) (0) | 2021.06.10 |