2016-02-11 31 views
6

Posiadam usługę, która ma wykonywać żądania przy ~ 5 lub więcej żądaniach/min. Ta usługa zależy od Apache AsyncHttpClient. Co kilka minut klienci przechodzą pewien stan, który powoduje java.lang.IllegalStateException: Żądanie nie może zostać wykonane; Stan reaktora I/O: STOPPED. Wszystkie żądania do klienta rozpoczynają się niepowodzeniem z tym samym komunikatem wyjątku. Po ponownym uruchomieniu usługi cykl powtarza się.java.lang.IllegalStateException: Żądanie nie może zostać wykonane; Status reaktora we/wy: STOPPED

Naprawdę trudno jest rozwiązać ten problem, ponieważ niepowodzenie wykonania żądania nie powoduje niespodziewanego odrzucenia metody () metody AsyncResponse.

Z tego, co mogłem zebrać nastąpiła poprawka HTTPCORE-370 w HttpCore NIO który rozwiązał podobny problem w 4.3.2. Używam następującą wersję - commons-httpclient-3.1.jar httpasyncclient-4.1.1.jar httpcore-4.4.4.jar httpcore-nio-4.4.4.jar

Jednak widząc ten problem. Każda pomoc byłaby naprawdę doceniana.

+0

Czy znalazłeś rozwiązanie problemu? – dav1d

Odpowiedz

0

mam do czynienia z tym samym wyjątek w mojej aplikacji, a ja w końcu znalazłem pomocne sugestie z tego postu - http://httpcomponents.10934.n7.nabble.com/I-O-reactor-status-STOPPED-td29059.html

Można użyć() metoda #getAuditLog reaktora I/O dowiedzieć się dokładnie, jaki wyjątek spowodował jego zakończenie.

Jeśli zachować odniesienie do Twojego ConnectionManager za IOReactor można wywołać tej metody, aby uzyskać wgląd do rzeczywistego problemu:

http://hc.apache.org/httpcomponents-core-4.4.x/httpcore-nio/apidocs/org/apache/http/impl/nio/reactor/AbstractMultiworkerIOReactor.html#getAuditLog()

Okazuje się, że robię coś niewiarygodnie głupiego w moim kodu . Ale nie mogłem tego rozgryźć, dopóki nie przeczytam dziennika kontroli.

+0

o masz ten sam problem, czy możesz podzielić się swoim powodem? – afei

+0

Mój problem dotyczył logiki biznesowej mojego kodu. To była sytuacja, w której próbowałem dwa razy zatrzymać ten sam Google Guava Stopwatch. To, co znajdziecie w dzienniku kontroli IOReactor, będzie prawdopodobnie czymś bardzo specyficznym dla kodu, który napisaliście. – Madpony