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.

Reply via email to