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 가 성공했는지 아니면 하나라도 실패했는지 파악할 수 있는 판단근거가 될 수 있기 때문에 둘의 상태를 구분해서 이해하시면 될 것 같습니다.
2021. 11. 04. 01:19
네
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 가 성공했는지 아니면 하나라도 실패했는지 파악할 수 있는 판단근거가 될 수 있기 때문에 둘의 상태를 구분해서 이해하시면 될 것 같습니다.