[Spring Batch] JobExecutionAlreadyRunningException 에러

Chooooo·2024년 5월 15일
0

스프링 배치

목록 보기
2/3

에러 발생

Spring Batch에서 Job 실행 시 에러 발생

Caused by: org.springframework.batch.core.repository.JobExecutionAlreadyRunningException: A job execution for this job is already running:

에러 원인

위 에러는 Job 실행 중에 애플리케이션을 강제로 종료시키고, 다시 실행한 경우에 발생했다. 에러 로그를 보면 내가 배치 작업 중 애플리케이션을 강제로 종료했는데, 해당 Job이 비정상적으로 종료되었지만, Spring Batch는 해당 Job이 아직 실행 중이라고 판단한 것 같다.

Spring Batch 5.0이후부터는 JobRepository를 통해 JobExecution을 조회하거나, 생성, 수젖ㅇ하는 로직을 볼 수 있따.
-> Spring Batch가 Job을 실행시킬 때 BATCH_JOB_EXECUTION, BATCH_STEP_EXECUTION 등 여러 테이블에 메타데이터를 기록하기 때문.

-> status가 running이면 예외를 발생시키는 코드가 발생했던 것.

해결 방법

쿼리 수행을 통해 status를 변경해줘야 했다.
-> jobExecution의 id로 수정

UPDATE
    BATCH_JOB_EXECUTION
SET END_TIME  = now(),
    STATUS    = 'FAILED',
    EXIT_CODE = 'FAILED'
WHERE JOB_EXECUTION_ID = ${id}
;
 
UPDATE
    BATCH_STEP_EXECUTION
SET END_TIME  = now(),
    STATUS    = 'FAILED',
    EXIT_CODE = 'FAILED'
WHERE JOB_EXECUTION_ID = ${id}
;

내 에러 로그의 경우 id가 5였다.

[ref.블로그]

profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글