0

I have two web apps deployed to one Tomcat 7 container. They communicate with each other over HTTP on localhost. I'm occasionally seeing connection reset errors:

Caused by: java.net.SocketException: Connection reset
    at java.net.SocketInputStream.read(SocketInputStream.java:189)
    at java.net.SocketInputStream.read(SocketInputStream.java:121)
    at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:149)
    at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:110)
    at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:260)
    at org.apache.http.impl.conn.LoggingSessionInputBuffer.readLine(LoggingSessionInputBuffer.java:115)
    at org.apache.http.impl.conn.DefaultResponseParser.parseHead(DefaultResponseParser.java:98)
    at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:252)
    at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:281)
    at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:247)
    at org.apache.http.impl.conn.AbstractClientConnAdapter.receiveResponseHeader(AbstractClientConnAdapter.java:219)
    at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:298)
    at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
    at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:633)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:454)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:776)
    at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:170)

My questions are:

  1. How can I find out what's causing these?
  2. Should I expect connect resets over the lo interface?
  3. If they are expected, what's the best way of dealing with them? Retry idempotent calls?
hertzsprung
  • 9,445
  • 4
  • 42
  • 77
  • [Reference](http://stackoverflow.com/questions/585599/whats-causing-my-java-net-socketexception-connection-reset) – thar45 Mar 05 '13 at 11:35

1 Answers1

1
  1. There can be various reasons for that. Usually the cause is a TCP level problem or abnormal connection termination due to excessive load, internal problem, etc

  2. I see no reason why a loopback device should be any special in this regard

  3. Yes, it is. Automatic retrial of idempotent methods would be the most reasonable recovery measure

ok2c
  • 26,450
  • 5
  • 63
  • 71