인프런 커뮤니티 질문&답변

dohyun_lim님의 프로필 이미지
dohyun_lim

작성한 질문수

스프링 배치

사용자 정의 ExitStatus

job execution에 stopped status가 안나타납니다.

해결된 질문

작성

·

367

0

안녕하세요 정수원 선생님

현재 Part.4.3.1.3.3 branch에서 mysql db로 실행시켰을때

step execution 에서 step1,step2 의 batch status는 각각 completed 이고

exit code는 각각 Failed , Pass인 상태입니다.

 

하지만 job execution에는 status , exitcode 둘다 모두 failed 인상태입니다.

 

왜 job execution이 stopped로 안나타는지 알 수 있을까요?

 

addDanglingEndStates 에서 끝나는 시점에 transitions에 2개가 추가 되어서 그런것일까요?

4를 타야할 것같은데 뭔가 5를 타는것같습니다.

5,6은 StepState:name=[batchJob.step1] 시점에서 !hasFail 분기를 타고 추가된것입니다.

 

답변 1

1

정수원님의 프로필 이미지
정수원
지식공유자

소스에서 오타가 난 것 같습니다.

public ExitStatus afterStep(StepExecution stepExecution) {

    String exitCode = stepExecution.getExitStatus().getExitCode();
    if (!exitCode.equals(ExitStatus.FAILED.getExitCode())) {
        return new ExitStatus("PASS ");
    } else {
        return null;
    }
}

위에서 PASS 다음에 공백이 하나 더 들어가는 바람에 STOPPED 상태를 건너뛰었습니다.

"PASS" 라고 하면 다음과 같이 잘 나오고 있습니다.

image

dohyun_lim님의 프로필 이미지
dohyun_lim
질문자

아 그렇군요 감사합니다.
혹시 제가 분석한것처럼 4를 타야하는데 5를 탄다 라는 표현이 맞는말일까요?

정수원님의 프로필 이미지
정수원
지식공유자

네 그렇게 이해하셔도 됩니다.

4를 타지 않으면 그 다음으로 넘어가서 실행 패턴을 비교하기 때문입니다.

dohyun_lim님의 프로필 이미지
dohyun_lim

작성한 질문수

질문하기