dataflow에 간단한 batch잡을 만들어서 실행시켰는데, 대시보드에서 Jobs 메뉴에 들어가지 않았다.
k8s환경이라 배치pod의 내용을 살펴보니 정상적으로 종료되고 COMPLETE상태로 끝난것 같았는데 이상했다.
문제 해결을 위해 dataflow-spring-cloud-dataflow-server
의 팟을 들어가봤는데 이런 에러가 있었다.
2021-04-15 15:25:43.969 WARN 1 --- [nio-8080-exec-1] o.s.c.d.s.c.RestControllerAdvice : Caught exception while handling a request: No corresponding taskExecutionId for jobExecutionId 6. This indicates that Spring Batch application has been executed that is not a Spring Cloud Task.
뭔가 JOB에 해당하는 TASK정보를 제대로 못 가져온다는것 같았는데, spring cloud task가 아닌 환경에서 실행된 BATCH잡이라는 의미같았다.
난 분명 dataflow를 이용해서 실행했는데..
실제로 dataflow에 연동된 DB를 들어가봤는데, JOB과 TASK의 연관관계가 제대로 설정되지 않았었다.
select * from TASK_TASK_BATCH
배치와 관련된 테이블들에는 데이터가 정상적으로 들어간것 같아서 코드를 꼼꼼하게 다시 살펴본 결과 @EnableTask
이 빠져있는것을 발견할 수 있었다.
공식 가이드 문서에는 아래와 같이 나와있었다.
The @EnableTask annotation sets up a TaskRepository, which stores information about the task execution (such as the start and end time of the task and the exit code).
task실행과 관련된 정보를 저장하는 기능을 활성화주는 역할을 하는데, 이걸 누락했더니 정상적으로 task로 인식하지 못하게 된 것이다.