2016-02-11 5 views
6

У меня есть служба, которая, как ожидается, выполнит запросы в ~ 5 или более запросов/мин. Эта услуга зависит от Apache AsyncHttpClient. Через каждые несколько минут клиенты сталкиваются с некоторым состоянием, которое вызывает java.lang.IllegalStateException: запрос не может быть выполнен; Состояние реактора ввода-вывода: STOPPED. Все запросы к клиенту начинаются с того же сообщения об исключении. После перезапуска службы этот цикл повторяется.java.lang.IllegalStateException: запрос не может быть выполнен; Состояние реактора ввода-вывода: STOPPED

Это очень сложно отладить эту проблему, так как ошибка выполнения запроса неожиданно не вызывает обратного вызова метода failed() метода AsyncResponse.

Из чего я мог собрать, было исправлено HTTPCORE-370 в HttpCore NIO, который решил аналогичную проблему в 4.3.2. Я использую следующую версию - Обще-HttpClient-3.1.jar httpasyncclient-4.1.1.jar httpcore-4.4.4.jar httpcore-NiO-4.4.4.jar

Тем не менее, видя эту проблему. Любая помощь будет действительно оценена.

+0

Скорее поздно, вы нашли решение этой проблемы? – dav1d

ответ

0

Я имел дело с этим же исключением в моем приложении, и я наконец-то нашел полезное предложение от этой должности - http://httpcomponents.10934.n7.nabble.com/I-O-reactor-status-STOPPED-td29059.html

Вы можете использовать метод #getAuditLog() реактора I/O в узнайте точно , какое исключение вызвало его прекращение.

Если вы сохранить ссылку на IOReactor вашего ConnectionManager, вы можете вызвать этот метод, чтобы получить представление о реальной проблеме:

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

Оказывается, я делаю что-то невероятно глупое в моем собственном коде , Но я не мог понять это, пока не прочитал журнал аудита.

+0

wo имеют такую ​​же проблему, не могли бы вы рассказать вам причину? – afei

+0

Моя проблема связана с бизнес-логикой моего кода. Это была ситуация, когда я пытался остановить один и тот же Google Guava StopWatch дважды. То, что вы найдете в журнале аудита IOReactor, скорее всего, будет очень специфичным для кода, который вы написали. – Madpony

Смежные вопросы