我正在努力将大约3 TB的数据索引到apache solr中.当数据大小达到14 GB时,我在tomcat日志中遇到错误.有可能对其进行故障排除吗?我打算稍后将我的索引移到solr cloud.
> 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)
Run Code Online (Sandbox Code Playgroud)
当 Solr 开始写入响应然后抛出异常时,就会发生这种情况。然后,在尝试处理该异常时,它抛出了另一个异常。在这种情况下,Solr 的后备措施是基本上放弃并调用HttpServletResponse#sendError(),这会抛出IllegalStateException,因为 Solr 已经编写了部分响应。作为副作用,原始异常会丢失。万岁!
如果幸运的话,其他一些组件会在将异常抛出堆栈之前记录该异常。在这种情况下,此错误的实际原因将在IllegalStateException. 否则,是时候在内部设置一个断点SolrDispatchFilter#sendError(),并在 Solr 吞掉异常之前查看异常了。
| 归档时间: |
|
| 查看次数: |
9420 次 |
| 最近记录: |