Mark Plotnick wrote:
I'm using a rather complicated web page with two frames and
a jsp in both frames.

The upper frame has an applet, and the applet loads a
document by calling a servlet (in the same session as the page).

Clicking within the applet will cause new pages to load in the
lower page.


As a result of all this activity I seem to get the "Socket Error"
bug described in thread "Problem with Socket closing" and
bug#12810.


Things would still not be too bad if the "CoyoteWriter" objects
were recycled. When the socket error occurs, the relevant "CoyoteWriter" objects get marked as being in error.

The problem is Tomcat (4.1.17 & 16) is still trying to reuse
these "CoyoteWriter" objects with the result of tomcat
returning blank pages to the browser.


CoyoteWriter does have a "isError()" method. A grep through
the source reveals nothing is ever calling this method.

It seems reasonable that after a socket write error, these
objects should get cleaned up and the application would
have a reasonable chance to recover.
Yes, this is correct (and a major bug, expect a new release soon).
There is no problem with recycling after an error. OTOH, the writer must not be set to a non error state right away once an IOException occurred.

I appreciate any insight and feedback on where these
"CoyoteWriter" objects should be managed.
Here's a patch:

Index: CoyoteResponse.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteResponse.java,v
retrieving revision 1.30
diff -r1.30 CoyoteResponse.java
322a323,324
> writer.recycle();
>
Index: CoyoteWriter.java
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteWriter.java,v
retrieving revision 1.2
diff -r1.2 CoyoteWriter.java
98a99,109
> // -------------------------------------------------------- Package Methods
>
>
> /**
> * Recycle.
> */
> void recycle() {
> error = false;
> }
>
>

Remy


--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>



Reply via email to