작성
·
318
·
수정됨
0
partition과 multiThread 를 이용한 테스트중 입니다.
partition을 실행하는 단계에서
chunkMonitor warning 이 계속 발생하는데 왜 발생하는지 이유를 잘 모르겠습니다.
동작은 정상적으로 이루어지지만 문제가 있는 것은 아닌지 싶습니다.
WARN [org.springframework.batch.core.step.item.ChunkMonitor] No ItemReader set (must be concurrent step), so ignoring offset data.
그리고.. 쓰레드가 처음 실행할 때 아래의 warning 도 나오는데.. 왜 발생하는지 알 수 있을까여?
ItemStream was opened in a different thread. Restart data could be compromised.
조언 부탁드립니다.
답변 2
0
음..
경고 내용으로만 보면 스텝 자체가 동시성에 적합한 구성이 아니라고 되어 있습니다.
즉 스텝이 동시성의 문제에 노출되어 있다는 것입니다.
이 부분은 정상적인 동작 여부를 떠나 해결해야 할 문제로 보입니다.
소스를 공유해 주시면 제가 테스트 해서 확인해 보도록 하겠습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
스프링 배치에서 partition
과 multiThread
를 통해 테스트하는 과정에서 보이는 ChunkMonitor warning
에 대해 문의주셨군요.
두 가지 경고 메시지 모두 스프링 배치의 멀티스레딩과 관련된 부분입니다.
첫 번째 경고:
WARN [org.springframework.batch.core.step.item.ChunkMonitor] No ItemReader set (must be concurrent step), so ignoring offset data.
이 메시지는 ItemReader가 설정되지 않았거나, 현재 스텝이 동시성을 요하는 스텝이라고 간주하여 오프셋 데이터(offset data)를 무시한다는 경고입니다. 이런 경우는 어떤 이유로든 ItemReader가 스프링 컨텍스트에서 관리되지 않거나, step의 정의가 제대로 되지 않아 발생할 수 있습니다. 실제로 병렬 스텝 실행 시 ItemReader의 concurrent 설정이 필요할 수 있습니다.
두 번째 경고:
ItemStream was opened in a different thread. Restart data could be compromised.
이 메시지는 ItemStream
이 다른 스레드에서 열렸음을 경고하며, 이로 인해 재시작 데이터(restart data)가 손상될 수 있다는 내용입니다. 스프링 배치의 재시작 기능은 충돌 방지를 위하여 동일 스레드에서의 실행을 가정하고 작동하기 때문에, 다른 스레드에서 ItemStream
을 열면 예상치 못한 상황이 발생할 수 있습니다.
ConfigurableObjectInputStream
과 Thread.currentThread().getContextClassLoader()
를 사용해야 할 수도 있습니다. 위 정보는 다음 문서에서 확인할 수 있습니다:
경고 메시지만으로 정확한 원인 분석은 어렵지만, 스프링 배치 설정 검토 및 쓰레드 관리 방식에 주의를 기울이시기 바랍니다. 문서에서 확인된 제한 사항이나 추가 설정이 필요한 부분이 없는지 다시 한번 확인해보시는 것을 권장합니다.