반응형
spring batch에서 job param을 전달할 때 관용적으로 -를 붙여서 사용했다.
문제가 된 시점은 프로젝트에서 중복으로 돌면 안되는 배치에 preventrestart를 붙히고 돌리고 있는데 주기적으로 already job param으로 동작한 배치가 있다면서 배치가 자꾸 죽는 이슈가 발생했다.
원인을 파악하기 위해 디버깅을 하던 중 spring batch에서 job의 unique를 판단하는 부분에서 job param으로 전달하고 있는 값들을 job instance에 유니크로 확인하는데 사용을 못하고 있는 부분을 발견했다.
그림을 보면 알겠지만 실제 parameter는 push라는 형태로 전달 되지만 identifying이 false로 되어있는걸 확인할 수 있다. 이러다보니 job instance가 이미 돈적이 있다는 오류가 계속 발생했었다.
그래서 이 identifying을 체크하는 로직을 따라가보니 param으로 설정할 때 -를 붙히면 identifying을 false로 지정하고 있는걸 확인했다.
관용적으로 쓰던 -가 실제 의미를 가지고 동작하는지는 처음 확인하게된 부분이었다.
param에서 -를 빼고 요청하니 정상적으로 identifying이 true로 동작하는걸 확인했다. 아마 기존에는 spring batch실행 시 prevent restart를 붙히지 않았거나 run.id를 붙여서 사용했어서 큰 이슈가 없었던 것 같다. 조심하자
반응형
'web > Spring' 카테고리의 다른 글
lettuce pipeline코드 사용시 커넥션 풀 사용 필요 (0) | 2024.06.08 |
---|---|
MapStruct의 mapping방식과 Lobmok 함께 사용 시 값이 mapping되지 않는 이유 (0) | 2023.03.27 |
Mapstruct 사용 시 collection 내부에 이름이 다른경우 (0) | 2023.03.25 |
dynamoDbEnhancedClient range query condition 사용 시 The provided starting key does not match the range key predicate 에러 발생 (0) | 2022.11.05 |
dynamoDbEnhancedClient에서 QueryConditional에서 sort key range 조회하기 (0) | 2022.11.04 |