Anony
6월 22, 2022, 9:12오전
1
프로세스 10개로 각 프로세스안에 Kafka 를 실행시키는데 Task 10개를 Topic 을 가져와서 실행시키는 구조로 되어있는데 ‘Thread was interrupted from a waiting state.’ 해당 오류가 발생하는데 왜 발생하는지 도움을 요청드립니다.
처리후 Kafka Producer 부분에서 발생되는것 같은데 정확한 이유를 모르는 상황입니다.
혹시 Thread 사용시 주의해야하는 점 같은게 있는지 여러가지 문의 드려봅니다.
2개의 좋아요
10개의 프로세스 중 같은 곳을 바라보는 프로세스가 있는게 아닐까요?
1개의 좋아요
혹시나.,
강제적으로 스레드를 중단 시키는 코드가 호출 되어서
interrupted 익셉션이 발생한건 아닌가요?
Thread.Interrupted() 나 Abort() 같은 메서드들로요
1개의 좋아요
nyjin
6월 23, 2022, 2:06오전
8
Producer 쪽 코드가 의심된다고 말씀하신 것 같은데 Consumer 코드네요.
Task.WaitAll(...., 5);
tasks.RemoveAll(x => x.IsCompleted);
5초 안에 task가 종료 되지 않는 케이스 처리가 없는 것 같은데 따로 처리하고 계신걸까요?
task가 누적되고 있지 않은가 해서요.
1개의 좋아요
Task.WaitAll
은 현재 스레드를 블로킹하고 나머지 작업이 완료될 때까지 기다립니다.
그래서 블로킹하지 않고 대기하는 Task.WhenAll
을 권장하는데 이 부분이 관련있을 수 있습니다.
2개의 좋아요
Anony
6월 23, 2022, 8:13오전
10
10개로만 운영되게끔 처리 되어 있어서 10개 Task 로 실행하고 있습니다.
Anony
6월 23, 2022, 8:15오전
11
WaitAll 이 WhenAll 과 같은 기능일까요?
역할은 같다고 보시면 될 것 같아요.
다만 WhenAll은 앞에 await 키워드가 필요합니다.