2014-02-16 1 views
7

Я работаю над индексированием около 3 Тбайт данных в apache solr. Я получаю ниже ошибки в моих журналах tomcat, когда размер данных достиг 14 ГБ. Возможно ли устранить эту проблему? Я планирую переместить мой индекс позже в solr cloud.java.lang.IllegalStateException: Не удалось вызвать sendError() после того, как ответ был получен

> SEVERE: Servlet.service() for servlet [default] in context with path 
> [/solr] threw exception java.lang.IllegalStateException: Cannot call 
> sendError() after the response has been committed 
>   at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:451) 
>   at org.apache.solr.servlet.SolrDispatchFilter.sendError(SolrDispatchFilter.java:757) 
>   at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:438) 
>   at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:201) 
>   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
>   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
>   at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
>   at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
>   at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
>   at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
>   at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
>   at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
>   at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
>   at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
>   at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
>   at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309) 
>   at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
>   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
>   at java.lang.Thread.run(Thread.java:662) 
+0

У меня такая же проблема, хотя на меньшем наборе данных –

ответ

2

Это происходит, когда Solr начинает писать ответ и затем выдает исключение. Затем, пытаясь обработать это исключение, он выбрасывает другой. Резерв Solr в этой ситуации состоит в том, чтобы в основном вырвать руки и вызвать HttpServletResponse#sendError(), который выдает IllegalStateException, потому что Solr уже написал часть ответа. В качестве побочного эффекта исходное исключение теряется. Ура!

Если вам повезет, другой компонент зарегистрировал исключение, прежде чем бросать его в стек. В этом случае фактическая причина этой ошибки появится в журнале незадолго до IllegalStateException. В противном случае пришло время установить точку останова внутри SolrDispatchFilter#sendError() и посмотреть на исключение, прежде чем Solr проглотит его.

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

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