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.