2014-02-16 41 views
7

我正在將大約3 TB的數據編入索引到apache solr。當數據大小達到14 GB時,我在tomcat日誌中出現錯誤。是否可以排除故障?我打算稍後將我的索引移動到solr雲。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吞下它之前查看異常。

相關問題