Bug 35038

Summary: After login tomcat throws Broken Pipe.
Product: Tomcat 3 Reporter: poornalingam <spoornalingam>
Component: UnknownAssignee: Tomcat Developers Mailing List <dev>
Status: RESOLVED WONTFIX    
Severity: normal Keywords: ErrorMessage
Priority: P3    
Version: 3.3 Release Candidate 1   
Target Milestone: ---   
Hardware: Sun   
OS: Solaris   

Description poornalingam 2005-05-24 11:35:19 UTC
We are using tomcat 3.3a in solaris 8.0 (SF25K).

My home page(After login) contain 4 frame set. In the toolbar (Header) page 
throwing Broken Pipe exception. It occures intermitantly. 

Exception type :1

java.io.IOException: Broken pipe
	at java.net.SocketOutputStream.socketWrite(Native Method)
	at java.net.SocketOutputStream.write(SocketOutputStream.java:96)
	at org.apache.tomcat.modules.server.Http10.doWrite(Unknown Source)
	at org.apache.tomcat.modules.server.HttpResponse.doWrite(Unknown Source)
	at org.apache.tomcat.core.OutputBuffer.realWriteBytes(Unknown Source)
	at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(Unknown Source)
	at org.apache.tomcat.core.OutputBuffer.flush(Unknown Source)
	at org.apache.tomcat.core.OutputBuffer.close(Unknown Source)
	at org.apache.tomcat.facade.ServletWriterFacade.close(Unknown Source)
	at com.documentum.wc.cmd.DwCommandDispatcher.service
(DwCommandDispatcher.java:289)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java)
	at org.apache.tomcat.facade.ServletHandler.doService(Unknown Source)
	at org.apache.tomcat.core.Handler.invoke(Unknown Source)
	at org.apache.tomcat.core.Handler.service(Unknown Source)
	at org.apache.tomcat.facade.ServletHandler.service(Unknown Source)
	at org.apache.tomcat.core.ContextManager.internalService(Unknown Source)
	at org.apache.tomcat.core.ContextManager.service(Unknown Source)
	at org.apache.tomcat.modules.server.Http10Interceptor.processConnection
(Unknown Source)
	at org.apache.tomcat.util.net.TcpWorkerThread.runIt(Unknown Source)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(Unknown Source)
	at java.lang.Thread.run(Thread.java:484)
2005-05-13 18:21:55 - Http10Interceptor: SocketException reading request, 
ignored

Exception type :2

2005-05-16 17:16:12 - DecodeInterceptor: Charset from session UTF-8
{The following error occurred after content was sent: }{Failed to dispatch the 
archive stream<br>}java.io.IOException: Broken pipe
2005-05-16 17:16:12 - Http10Interceptor: SocketException reading request, 
ignored

Anybody face this exception ever before.
Comment 1 william.barker 2005-05-24 19:37:26 UTC
The exception is simply that the browser stopped talking to Tomcat before 
Tomcat expected it to.  It's not too surprising, since frames and HTTP/1.0 
don't play well together.

The Http10Connector is currently deprecated.  You're best bet is to upgrade to 
3.3.2 and use the CoyoteConnector instead.
Comment 2 poornalingam 2005-05-25 03:47:45 UTC
Hi,
Thanks for your valuable information. We can't update the Tomcat version. 
Because it came along with the Product (Documentum4.i). 

Now i want to clarify only one thing. 
In our home page contains 5 frame set. We are facing this issue (Broken pipe) 
only in the Header Frame set. Rest of the frame are displaing correctly. 
How it is possible?
User confirm that, she didn't press the stop button.

Thanks,
(In reply to comment #1)
> The exception is simply that the browser stopped talking to Tomcat before 
> Tomcat expected it to.  It's not too surprising, since frames and HTTP/1.0 
> don't play well together.
> The Http10Connector is currently deprecated.  You're best bet is to upgrade 
to 
> 3.3.2 and use the CoyoteConnector instead.



Comment 3 poornalingam 2005-05-25 03:54:56 UTC
The exception is simply that the browser stopped talking to Tomcat before 
Tomcat expected it to.  It's not too surprising, since frames and HTTP/1.0 
don't play well together.

The Http10Connector is currently deprecated.  You're best bet is to upgrade to 
3.3.2 and use the CoyoteConnector instead
Comment 4 william.barker 2005-05-28 03:04:32 UTC
(In reply to comment #2)
> Hi,
> Thanks for your valuable information. We can't update the Tomcat version. 
> Because it came along with the Product (Documentum4.i). 

It's theoretically possible to update the Connector only, but I don't know of 
anybody that has tried it in a very long time. Probably easier is to front 
your app with Apache and mod_jk.  Prior to 3.3.2, the stand-alone Connector 
isn't really suitable for production use.

> Now i want to clarify only one thing. 
> In our home page contains 5 frame set. We are facing this issue (Broken 
pipe) 
> only in the Header Frame set. Rest of the frame are displaing correctly. 
> How it is possible?
> User confirm that, she didn't press the stop button.
> Thanks,

Well, modern browsers (esp. ones from MS) can get confused when presented with 
frames and a HTTP/1.0 server.  If you disable the use of HTTP/1.1 in the 
browser, it may work better (at the expense of much worse performance on all 
other sites).

The problem is that with HTTP/1.0, the browser needs to open a new Socket 
connection to retrieve each part of the frame, and they don't like this 
anymore than your server does.  What is probably happening is that the browser 
is attempting to use the keep-alive extension to HTTP/1.0, and giving up in 
disgust when it discovers that the (now deprecated) Http10Connector doesn't 
support it.