Thread was interrupted from a waiting state. 왜 발생하는 걸까요?

프로세스 10개로 각 프로세스안에 Kafka 를 실행시키는데 Task 10개를 Topic 을 가져와서 실행시키는 구조로 되어있는데 ‘Thread was interrupted from a waiting state.’ 해당 오류가 발생하는데 왜 발생하는지 도움을 요청드립니다.

처리후 Kafka Producer 부분에서 발생되는것 같은데 정확한 이유를 모르는 상황입니다.

혹시 Thread 사용시 주의해야하는 점 같은게 있는지 여러가지 문의 드려봅니다.

좋아요 2

코드 공유 가능할까요?

좋아요 2

10개의 프로세스 중 같은 곳을 바라보는 프로세스가 있는게 아닐까요?

좋아요 1

혹시나.,

강제적으로 스레드를 중단 시키는 코드가 호출 되어서

interrupted 익셉션이 발생한건 아닌가요?

Thread.Interrupted() 나 Abort() 같은 메서드들로요

좋아요 1

현재 이런식으로 코드를 사용하고 있습니다.

좋아요 1

Producer 쪽 코드가 의심된다고 말씀하신 것 같은데 Consumer 코드네요.

Task.WaitAll(...., 5);
tasks.RemoveAll(x => x.IsCompleted);

5초 안에 task가 종료 되지 않는 케이스 처리가 없는 것 같은데 따로 처리하고 계신걸까요?
task가 누적되고 있지 않은가 해서요.

좋아요 1

Task.WaitAll은 현재 스레드를 블로킹하고 나머지 작업이 완료될 때까지 기다립니다.
그래서 블로킹하지 않고 대기하는 Task.WhenAll을 권장하는데 이 부분이 관련있을 수 있습니다.

좋아요 2

10개로만 운영되게끔 처리 되어 있어서 10개 Task 로 실행하고 있습니다.

WaitAll 이 WhenAll 과 같은 기능일까요?

역할은 같다고 보시면 될 것 같아요.

다만 WhenAll은 앞에 await 키워드가 필요합니다.