Hi all,
i have a Solr instance running under tomcat 5.5. My application uses a java
servlet to handle data. I have a problem with "add-update" process: at the
first run the add process is ok and very fast . At this first run i add
around 2.000 docs. Then i commit and all is ok.
The problem is that if i run the same the "add - update" process again,
sometimes (not all the times) it fails with this error:
13-nov-2007 8.17.32 org.apache.solr.handler.XmlUpdateRequestHandler update
INFO: added id={2524} in 15ms
- I/O exception (java.net.BindException) caught when processing request:
Address already in use: connect
- Retrying request
- I/O exception (java.net.BindException) caught when processing request:
Address already in use: connect
- Retrying request
- I/O exception (java.net.BindException) caught when processing request:
Address already in use: connect
- Retrying request
Fatal transport error: Address already in use: connect
java.net.BindException: Address already in use: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at java.net.Socket.<init>(Unknown Source)
at
org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:79)
at
org.apache.commons.httpclient.protocol.DefaultProtocolSocketFactory.createSocket(DefaultProtocolSocketFactory.java:121)
at
org.apache.commons.httpclient.HttpConnection.open(HttpConnection.java:706)
at
org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:386)
at
org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:170)
at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:396)
at
org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:324)
at
intellisemantic.servlet.solr.DWServlet.sendPostCommand(DWServlet.java:985)
at
intellisemantic.servlet.solr.DWServlet.processExecuteCommand(DWServlet.java:826)
at intellisemantic.servlet.solr.DWServlet.indexing(DWServlet.java:435)
at intellisemantic.servlet.solr.DWServlet.doGet(DWServlet.java:163)
at intellisemantic.servlet.solr.DWServlet.doPost(DWServlet.java:1113)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
- Servlet.service() for servlet dw threw exception
java.lang.NullPointerException
at
intellisemantic.servlet.solr.DWServlet.sendPostCommand(DWServlet.java:1022)
at
intellisemantic.servlet.solr.DWServlet.processExecuteCommand(DWServlet.java:826)
at intellisemantic.servlet.solr.DWServlet.indexing(DWServlet.java:435)
at intellisemantic.servlet.solr.DWServlet.doGet(DWServlet.java:163)
at intellisemantic.servlet.solr.DWServlet.doPost(DWServlet.java:1113)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
at
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
at
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Unknown Source)
The code i'm using for sending the post command for adding docs is the
following:
private String sendPostCommand(String command, String url)
throws IOException {
StringBuffer results = null;
HttpClient client = new HttpClient();
PostMethod post = new PostMethod(url);
RequestEntity re = new StringRequestEntity(command, "text/xml",
"UTF-8");
post.setRequestEntity(re);
try {
// Execute the method.
int statusCode = client.executeMethod(post);
if (statusCode != HttpStatus.SC_OK) {
System.err.println("Method failed: " +
post.getStatusLine());
}
InputStream responseBody =
post.getResponseBodyAsStream();
DataInputStream din = new DataInputStream(responseBody);
results = new StringBuffer();
String line = null;
BufferedReader br = new BufferedReader(new
InputStreamReader(responseBody,"UTF-8"));
while ((line = br.readLine()) != null) {
results.append(line+"\n");
}
//System.out.println(results);
br.close();
din.close();
responseBody.close();
} catch (HttpException e) {
System.err.println("Fatal protocol violation: " +
e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("Fatal transport error: " +
e.getMessage());
e.printStackTrace();
} finally {
// Release the connection.
post.releaseConnection();
}
return results.toString();
}
I was wondering if it's a solr relelated issue or if it depends on tomcat
configuration.
Thanks for help.
Daniele Salvatico
--
View this message in context:
http://www.nabble.com/--I-O-exception-%28java.net.BindException%29-caught-when-processing-request%3A-Address-already-in-use%3A-connect-while-updating-tf4796622.html#a13722290
Sent from the Solr - User mailing list archive at Nabble.com.