For replication in 1.4, the wiki at http://wiki.apache.org/solr/SolrReplication says that a node can be both the master and a slave:

A node can act as both master and slave. In that case both the master and slave configuration lists need to be present inside the ReplicationHandler requestHandler in the solrconfig.xml.

What does this mean?  Does the core then poll itself for updates?

I'd like to have a single set of configuration files that are shared by masters and slaves and avoid duplicating configuration details in multiple files (one for master and one for slave) to ease management and failover. Is this possible?

When I attempt to setup a multi server master-slave configuration and include both master and slave replication configuration options, I into some problems. I'm running a nightly build from May 7.


  <requestHandler name="/replication" class="solr.ReplicationHandler" >
    <lst name="master">
      <str name="replicateAfter">commit</str>
    </lst>
    <lst name="slave">
<str name="masterUrl">http://master_core01:8983/solr/core01/ replication</str>
      <str name="pollInterval">00:00:60</str>
    </lst>
  </requestHandler>


When the replication admin page (http://master_core01:8983/solr/core01/ admin/replication/index.jsp) is visited, the severe error show below appears in the solr log. The server is otherwise idle so there is no reason all threads should be busy unless the replication code is getting itself into a loop.

What's the right way to do this?



May 11, 2009 8:01:22 PM org.apache.tomcat.util.threads.ThreadPool logFull SEVERE: All threads (150) are currently busy, waiting. Increase maxThreads (150) or check the servlet status May 11, 2009 8:01:41 PM org.apache.solr.handler.ReplicationHandler getReplicationDetails
WARNING: Exception while invoking a 'details' method on master
java.net.SocketTimeoutException: Read timed out
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
at java.io.BufferedInputStream.fill(BufferedInputStream.java: 218) at java.io.BufferedInputStream.read(BufferedInputStream.java: 237) at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78) at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106) at org .apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java: 1116) at org.apache.commons.httpclient.MultiThreadedHttpConnectionManager $ HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java: 1413) at org .apache .commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java: 1973) at org .apache .commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java: 1735) at org .apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java: 1098) at org .apache .commons .httpclient .HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398) at org .apache .commons .httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java: 171) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java: 397) at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java: 323) at org .apache.solr.handler.SnapPuller.getNamedListResponse(SnapPuller.java: 183) at org.apache.solr.handler.SnapPuller.getCommandResponse(SnapPuller.java: 178) at org .apache .solr .handler .ReplicationHandler.getReplicationDetails(ReplicationHandler.java:555) at org .apache .solr .handler.ReplicationHandler.handleRequestBody(ReplicationHandler.java: 147) at org .apache .solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java: 131)
        at org.apache.solr.core.SolrCore.execute(SolrCore.java:1330)
at org .apache.jsp.admin.replication.index_jsp.executeCommand(index_jsp.java: 34) at org.apache.jsp.admin.replication.index_jsp._jspService(index_jsp.java: 208) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org .apache .jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org .apache .catalina .core .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: 269) at org .apache .catalina .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org .apache .catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java: 679) at org .apache .catalina .core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java: 461) at org .apache .catalina .core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:399) at org .apache .catalina .core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301) at org .apache .solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:273) at org .apache .catalina .core .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: 215) at org .apache .catalina .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org .apache .catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: 213) at org .apache .catalina.core.StandardContextValve.invoke(StandardContextValve.java: 172) at org .apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java: 127) at org .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java: 117) at org .apache .catalina .valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java: 482) at org .apache .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: 174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java: 875) at org.apache.coyote.http11.Http11BaseProtocol $Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org .apache .tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org .apache .tomcat .util .net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java: 81) at org.apache.tomcat.util.threads.ThreadPool $ControlRunnable.run(ThreadPool.java:689)
        at java.lang.Thread.run(Thread.java:619)


-Bryan




Reply via email to