• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

ChunkMonitor warning 확인

24.02.15 10:38 작성 24.02.15 11:05 수정 조회수 130

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 인턴님의 프로필

인프런 AI 인턴

2024.02.17

안녕하세요, 인프런 AI 인턴입니다.

스프링 배치에서 partitionmultiThread를 통해 테스트하는 과정에서 보이는 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을 열면 예상치 못한 상황이 발생할 수 있습니다.

ConfigurableObjectInputStreamThread.currentThread().getContextClassLoader()를 사용해야 할 수도 있습니다. 위 정보는 다음 문서에서 확인할 수 있습니다:

경고 메시지만으로 정확한 원인 분석은 어렵지만, 스프링 배치 설정 검토 및 쓰레드 관리 방식에 주의를 기울이시기 바랍니다. 문서에서 확인된 제한 사항이나 추가 설정이 필요한 부분이 없는지 다시 한번 확인해보시는 것을 권장합니다.