eurotrans-Verlag wrote:
Hi André, thanks for your reply.
To figure out if this is what's happening, you could do some logging at
the servlet end,
to see if it keeps sending data even when the client has canceled, or
if it itself gets
some stop indication from the isapi_redirector (also a closed socket
e.g.).
Or else Mladen or Rainer could tell us if I'm totally off-base here.
I added some logging to the Servlet to see what it is actually doing
(logging the start and end of the doGet() method and every time 2 MB are
written, and I also put the write loop in a try-catch clause to catch
IOException).
You are right: When I start the download, the servlet writes the bytes
slowly (due to the speed of the Connection) to the output. However, when I
then cancel the download, it writes the remaining bytes very fast, probably
causing the high CPU usage of the ISAPI redirector.
But in some cases, the result is another: After I canceled the download, the
write() method throws an IOException:
ClientAbortException: java.io.IOException: Failed to send AJP message
and the remaining bytes are not written, so the CPU usage does not go up to
100% (That's probably the other case I mentioned before, that sometimes the
CPU usage doesn't go up).
However I would expect write() to always throw an IOException when the
connection to the client is aborted,
Remember, there are 2 separate connections : the connection of the client to
IIS+isapi_redirector, and the connection from IIS+isapi_redirector to Tomcat+servlet.
The servlet will only throw an I/O exception if that second connection is
closed.
So it all depends on whether the isapi_redirector closes the connection to Tomcat also,
when the client has closed its connection to IIS.
but it seems that in most cases, the
IOException is not thrown, thus causing the servlet to write the remaining
bytes very fast to the ISAPI redirector and probably causing the high CPU
load.
Do you or anybody have an idea why sometimes the IOException is not thrown
when the Client aborts the Connection?
I have no idea. We need Mladen or Rainer here..
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org