Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between java.net.SocketException: Connection reset and java.net.SocketException: Broken Pipe?

Tags:

java

sockets

What is the difference between java.net.SocketException: Connection reset and java.net.SocketException: Broken Pipe?

I am trying to figure what are the reasons for these two exceptions. We are getting following error on our server, which is basically a soap based webservice. When I try to abort the client call the exception I am seeing is Broken pipe...

Following is the stack trace we, any help is appreciated!

2011-01-10 00:44:33,828 96893947 INFO  [STDOUT] (http-0.0.0.0-8180-Processor25:) ERROR:  ''
2011-01-10 00:44:33,829 96893948 INFO  [STDOUT] (http-0.0.0.0-8180-Processor25:) Jan 10, 2011 12:44:33 AM com.sun.xml.rpc.server.http.JAXRPCS
ervletDelegate doGetDefault
SEVERE: JAXRPCSERVLET34: transformation failed : ClientAbortException:  java.net.SocketException: Connection reset
JAXRPCSERVLET34: transformation failed : ClientAbortException:  java.net.SocketException: Connection reset
        at com.sun.xml.rpc.server.http.WSDLPublisher.handle(WSDLPublisher.java:109)
        at com.sun.xml.rpc.server.http.JAXRPCServletDelegate.doGetDefault(JAXRPCServletDelegate.java:185)
        at com.sun.xml.rpc.server.http.JAXRPCServletDelegate.doGet(JAXRPCServletDelegate.java:153)
        at com.sun.xml.rpc.server.http.JAXRPCServlet.doGet(JAXRPCServlet.java:111)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
--
        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(Thread.java:595)
2011-01-10 00:44:33,829 96893948 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/soa].[UserService]] (http-0.0.0.0-81
80-Processor25:) Servlet.service() for servlet UserService threw exception
javax.servlet.ServletException: JAXRPCSERVLET34: transformation failed : ClientAbortException:  java.net.SocketException: Connection reset
        at com.sun.xml.rpc.server.http.JAXRPCServletDelegate.doGetDefault(JAXRPCServletDelegate.java:347)
        at com.sun.xml.rpc.server.http.JAXRPCServletDelegate.doGet(JAXRPCServletDelegate.java:153)
        at com.sun.xml.rpc.server.http.JAXRPCServlet.doGet(JAXRPCServlet.java:111)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
like image 1000
Java Guy Avatar asked Jan 10 '11 22:01

Java Guy


People also ask

What is Java net SocketException broken pipe?

'Broken pipe' errors usually occur when the browser is closed before the request can be completed. They are harmless. There are various reasons, but the most common being a browser session being closed while the request is still processing.

What is Java net SocketException connection reset?

java.net.SocketException: Connection resetThis SocketException occurs on the server-side when the client closed the socket connection before the response could be returned over the socket. For example, by quitting the browser before the response was retrieved. Connection reset simply means that a TCP RST was received.

What is a broken pipe exception?

A broken pipe exception typically means that one process is attempting to read or writ data from a pipe, where as the process on the other end of the pipe has died/been killed.


2 Answers

'Connection reset' can occur when reading or writing. 'Broken pipe' can only occur when writing. Both are caused by writing to a connection that has already been closed by the other end, or that has been reset for some other reason.

like image 86
user207421 Avatar answered Oct 09 '22 09:10

user207421


Both Connection reset and Broken pipe occurs when the connection has been closed by the peer (i.e. application holding the connection at the other side).

Connection reset can occur when writing (see java.net.SocketOutputStream) or reading (see java.net.SocketInputStream).

Broken pipe occurs in a Native method of java.net.SocketException:

java.net.SocketException: Broken pipe
    at java.net.SocketOutputStream.socketWrite0(Native Method)
    at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:92)

Thus, Broken pipe occurs at a lower communication level, as Michael Borgwardt suggested.

In most cases, I see this error when sending a big PDF to the client browser and the user kills the browser before getting the whole document (in this case, I simply ignore the error since this was the user choice to close its browser and there is nothing to correct). But it could be other reasons (e.g. EJP suggests more reason related to data communication protocols).

like image 41
Julien Kronegg Avatar answered Oct 09 '22 08:10

Julien Kronegg