Hi there,
We have a setup in which our main application (running on a separate Tomcat 
instance on the same machine) uses SolrJ calls to an instance of Solr running 
on the same box. SolrJ is used both for indexing and searching Solr. Searching 
seems to be working fine, but quite frequently we see the following stack trace 
in our application logs:

org.apache.solr.common.SolrException: Service Unavailable
Service Unavailable
request: http://localhost:8070/solr/unify/update/javabin
  at 
org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:424)
  at 
org.apache.solr.client.solrj.impl.CommonsHttpSolrServer.request(CommonsHttpSolrServer.java:243)
  at 
org.apache.solr.client.solrj.request.AbstractUpdateRequest.process(AbstractUpdateRequest.java:105)
  at org.apache.solr.client.solrj.SolrServer.commit(SolrServer.java:86)
  at 
vyre.content.rabida.index.RemoteIndexingThread.sendIndexRequest(RemoteIndexingThread.java:283)
  at 
vyre.content.rabida.index.RemoteIndexingThread.commitBatch(RemoteIndexingThread.java:195)
  at 
vyre.util.thread.AbstractBatchProcessor.commit(AbstractBatchProcessor.java:93)
  at 
vyre.util.thread.AbstractBatchProcessor.run(AbstractBatchProcessor.java:117)
  at java.lang.Thread.run(Thread.java:619)

Looking in the Solr logs, there does not appear to be any problems. The host 
and port number are correct, its just sometimes our content gets indexed 
(visible in the solr logs), and sometimes it doesn't (nothing visible in solr 
logs). I'm not sure what could be causing this problem, but I can hazard a 
couple of guesses; is there any upper llimit on the size of a javabin request, 
or any point at which the service would decide that the POST was too large? Has 
any one else encountered a similar problem?

On a final note, scrolling back through the solr logs does reveal the following:

29-Mar-2010 17:05:25 org.apache.solr.core.SolrCore getSearcher
WARNING: [unify] Error opening new searcher. exceeded limit of 
maxWarmingSearchers=2, try again later.
29-Mar-2010 17:05:25 org.apache.solr.update.processor.LogUpdateProcessor finish
INFO: {} 0 22
29-Mar-2010 17:05:25 org.apache.solr.common.SolrException log
SEVERE: org.apache.solr.common.SolrException: Error opening new searcher. 
exceeded limit of maxWarmingSearchers=2, try again later.
       at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1029)
       at 
org.apache.solr.update.DirectUpdateHandler2.commit(DirectUpdateHandler2.java:418)
       at 
org.apache.solr.update.processor.RunUpdateProcessor.processCommit(RunUpdateProcessorFactory.java:85)
       at 
org.apache.solr.handler.RequestHandlerUtils.handleCommit(RequestHandlerUtils.java:107)
       at 
org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:48)
       at 
org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131)
       at org.apache.solr.core.SolrCore.execute(SolrCore.java:1316)
       at 
org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:338)
       at 
org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241)
       at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
       at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
       at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
       at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
       at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
       at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
       at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
       at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
       at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
       at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
       at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
       at java.lang.Thread.run(Thread.java:619)

This appears to be an unrelated problem, as the timing is different from the 
rejected indexing requests. As there is a large number of concurrent searching 
and indexing going on constantly, I'm guessing that I've set the number of 
"maxWarmingSearches" too low, and that as two searchers are warming up, further 
indexing causes more searches to be warmed, violating this maximum value - does 
this sound like a reasonable conclusion?

Thanks in advance for any help.

Jon

Reply via email to