inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 배치

SimpleFlow 예제

EXITE_CODE 질문드립니다.

471

개감

작성한 질문수 9

3

챕터 : 스프링 배치 실행 - flow
강의명 : 
SimpleFlow 예제

해당 강의 13:59 부터 이해가 잘안되고 있습니다.

flow1()의 step2에서 예외가 발생하면서
STEP_EXCUTION의 EXITE_CODE가  FAILED이므로
flow3()을 실행했고
이후 flow3() 그에 해당하는 모든 스탭이 COMPLETED인데


왜 JOB_EXCUTION의 EXITE_CODE가 FAILED가 되는걸까요?

spring-batch spring-boot

답변 2

1

개감

와.. 쏙쏙 이해가 되네요.. 감사합니다... ㅠㅠ감동스

1

개감

여러 테스트를 해봤는데요
flow job 안의 flow들 중에서 한번이라도 FAILED이 있으면
JOB_EXCUTION의 EXITE_CODE가 FAILED가 되는 것처럼 유추됩니다 ㅠㅠ...

8

정수원

JOB_EXECUTION 의 STATUS 와 EXIT_CODE 는 상태값이 다르게 작동하는데요

FlowJob 같은 경우 BATCH STATUS 값은 각 STEP 이나 FLOW 실행의 성공 및 실패 값에 따라 결정되는 것이 아니라 흐름의 최종 결정에 따라 정해집니다.

즉 FLOW 의 최종 흐름이 fail() 로 끝나면 STATUS 는 FAILED 가 되고 FLOW 의 최종 흐름이 end() 로 끝나면 STATUS 는 COMPLETED 가 되는 식입니다.

하지만 JOB_EXECUTION 의 EXIT_CODE 는 STEP 혹은 FLOW 의 실행에 따른 성공 및 실패 값에 따라 결정이 납니다.

그래서 흐름중에 어떤 STEP 에서 FAILED 가 발생하면 나머지 모두가 성공하더라도 종료 상태는 FAILED 가 됩니다. 

내부적으로 FAILED 가 COMPLETED 보다 우선적으로 최종 값이 되도록 로직이 구성되어 있습니다.

예를 들면 만장일치가 아니고 하나라도 반대하면 통과하지 못하는 것과 비슷한 맥락이라 보시면 됩니다.

일반적으로 우리가 배치가 최종 성공했는지 실패했는지를 판단하는 기준은 EXIT_CODE 라기 보다는 STATUS 라 보시면 됩니다.

종료를 실패로 마쳤는지 성공으로 마쳤는지의 기록도 필요하겠지만 궁극적으로는 배치의 최종 상태에 더 관심을 둡니다.

JOB 의 배치가 COMPLETED 로 최종 마쳤지만 STEP 이나 FLOW 는 얼마든지 FAILED 가 될 수 있습니다.

그렇기 때문에 비록 배치 상태 즉 STATUS 는 COMPLETED 이더라도 EXIT_CODE 값을 보고 모든 STEP 이나 FLOW 가 성공했는지 아니면 하나라도 실패했는지 파악할 수 있는 판단근거가 될 수 있기 때문에 둘의 상태를 구분해서 이해하시면 될 것 같습니다.

3

화이팅

내부적으로 ExitStatus의 우선순위에 대한 로직 공유합니다.

image

스프링 배치 버전 질문

0

122

1

소스코드가 어디에 있나요?

0

96

2

트랜잭션 예외

0

92

1

질문이 있습니다.

0

130

2

ChunkListener 에서 beforeChunk 의 실행 시점 관련 질문

0

125

2

여러 JOB 설정하는법

0

150

2

강의 자료 다른 방법 있을까요?

0

154

1

JobExecution과 JobExecutionContext와의 관계

0

186

2

특정 job만 실행

1

252

1

Batch 성능 질문

0

153

1

ItemReaderAdapter 종료

0

80

1

[ 강좌 Git 브랜치 문의 ] 섹션 9 > JdbcCursorItemReader, JpaCursorItemReader

0

179

2

Spring Batch 배포 질문

0

245

2

spring batch 버전

0

236

2

retry count 관련 질문

0

172

2

StepExecutionListener 의 afterStep 에서 return ExitStatus.FAILED 에 의한 동작에 의문이 갑니다.

0

330

2

jdbc, jpa 커서방식 조회 방식 차이 질문 (강사님께 답변 받고 싶습니다)

0

235

2

Multithread step과 AsyncItemProcessor

0

203

2

job 재실행

0

251

2

bean 생명주기 문제 도와주세요(@Scope("step"), @Autowired)

0

183

1

Multi-threaded-step과 Partitioning 차이 확인

0

175

2

jdbcCursorReader, jdbcPagingReader 질문

0

146

1

step muti-thread 질문

0

111

1

itemSteam open update close 질문

0

112

1