You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Haroon Rafique <ha...@utoronto.ca> on 2006/12/05 22:39:27 UTC

mod_jk problem when streaming files larger than ~400k (causes ClientAbortException)

Hi Devs,

I sent this to the user list without any responses. I am looking for some 
insight from the dev list. You can also see the nabble archive of the 
user-list posting at 
http://www.nabble.com/mod_jk-problem-when-streaming-files-larger-than-%7E400k-%28causes-ClientAbortException%29-t2756411.html

If I don't get any responses, then I can submit a bugzilla bug with a 
"testcase" war file and its source (maven driven) so that the devs can 
play around with it.

Cheers,
--
Haroon Rafique
<ha...@utoronto.ca>


---------- Forwarded message ----------
Date: Mon, 4 Dec 2006 15:01:19 -0500 (EST)
From: Haroon Rafique <ha...@utoronto.ca>
To: users@tomcat.apache.org
Subject: mod_jk problem when streaming files larger than ~400k (causes
     ClientAbortException)

Hi,

I am using mod_jk 1.2.19 on Linux with JDK 1.5.0_08, tomcat 5.5.20. Our 
application is struts-based and in one of our actions we stream a PDF to the 
client. The pseudo-code for outputting the response back to the client is as 
follows (assuming baos contains a ByteArrayOutputStream):

              OutputStream out = response.getOutputStream();
              baos.writeTo(out);
              out.flush();
              out.close();

We noticed no problems when the size of baos was less than 400k. Now the 
filesize has jumped to a little greater than 400k. With mod_jk in the picture, 
intermittently (not all the time), we get ClientAbortException:

      Caused by: ClientAbortException:  java.io.IOException
          at
          org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366)

The end result being that the PDF is truncated and Acrobat considers it
damaged.

Without mod_jk in the picture, everything is fine.

Turning up the mod_jk logging to debug gave me too much info. Turning it down 
to info gave me some clues. Basically, there are 3 flavors of the failures. 
Maybe they are all the same but it might appear different to a
trained eye, so I'm posting all three.

Flavor 1 error:
===============
[Mon Dec 04 14:28:59 2006] [25445:9920] [info]
      ajp_connection_tcp_get_message::
      jk_ajp_common.c (941): (local) Tomcat has forced a connection close for
      socket 22
[Mon Dec 04 14:28:59 2006] [25445:9920] [error]
      ajp_get_reply::jk_ajp_common.c (1562): (local) Tomcat is down or network
      problems. Part of the response has already been sent to the client
[Mon Dec 04 14:28:59 2006] [25445:9920] [info]
      ajp_service::jk_ajp_common.c (18 28): (local) receiving from tomcat
      failed,
      recoverable operation attempt=0
[Mon Dec 04 14:28:59 2006] [25445:9920] [info]
      ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
      failed,
      recoverable operation attempt=1
[Mon Dec 04 14:28:59 2006] [25445:9920] [info]
      ajp_process_callback::jk_ajp_common.c (1410): Writing to client aborted or
      client
      network problems
[Mon Dec 04 14:28:59 2006] [25445:9920] [info]
      ajp_service::jk_ajp_common.c (1795): (local) request failed, because of
      client
      write error without recovery in send loop attempt=1
[Mon Dec 04 14:28:59 2006] [25445:9920] [info]
      jk_handler::mod_jk.c (2056): Aborting connection for worker=local

Flavor 2 error:
===============
[Mon Dec 04 14:30:30 2006] [25448:9920] [info]
      ajp_send_request::jk_ajp_common.c (1170): (local) socket 22 is not
      connected
      any more (errno=0)
[Mon Dec 04 14:30:30 2006] [25448:9920] [info]
      ajp_send_request::jk_ajp_common.c (1194): (local) error sending request.
      Will
      try another pooled connection
[Mon Dec 04 14:30:30 2006] [25448:9920] [info]
      ajp_send_request::jk_ajp_common.c (1218): (local) all endpoints are
      disconnected
      or dead
[Mon Dec 04 14:30:30 2006] [25448:9920] [info]
      ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
      failed,
      recoverable operation attempt=1
[Mon Dec 04 14:30:32 2006] [25448:9920] [info]
      ajp_connection_tcp_get_message::jk_ajp_common.c (941): (local) Tomcat has
      forced a connection close for socket 22
[Mon Dec 04 14:30:32 2006] [25448:9920] [error]
      ajp_get_reply::jk_ajp_common.c (1562): (local) Tomcat is down or network
      problems. Part of the response has already been sent to the client
[Mon Dec 04 14:30:32 2006] [25448:9920] [info]
      ajp_service::jk_ajp_common.c (1828): (local) receiving from tomcat failed,
      recoverable operation attempt=1
[Mon Dec 04 14:30:32 2006] [25448:9920] [info]
      ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
      failed,
      recoverable operation attempt=2
[Mon Dec 04 14:30:32 2006] [25448:9920] [error]
      ajp_service::jk_ajp_common.c (1879): (local) Connecting to tomcat failed.
      Tomcat is probably not started or is listening on the wrong port
[Mon Dec 04 14:30:32 2006] [25448:9920] [info]
      jk_handler::mod_jk.c (2063): Service error=0 for worker=local

Flavor 3 error:
===============
[Mon Dec 04 14:32:31 2006] [25444:9920] [info]
      ajp_send_request::jk_ajp_common.c (1170): (local) socket 22 is not
      connected any more (errno=0)
[Mon Dec 04 14:32:31 2006] [25444:9920] [info]
      ajp_send_request::jk_ajp_common.c (1194): (local) error sending
      request.  Will try another pooled connection
[Mon Dec 04 14:32:31 2006] [25444:9920] [info]
      ajp_send_request::jk_ajp_common.c (1218): (local) all endpoints are
      disconnected or dead
[Mon Dec 04 14:32:31 2006] [25444:9920] [info]
      ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
      failed,  recoverable operation attempt=1


Does anyone have any experience with streaming large files using mod_jk? If I 
don't get any responses I will try the dev list.

Here's my mod_jk.conf:

LoadModule jk_module modules/mod_jk.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkShmFile logs/mod_jk.shm
JkMount /jkstatus/ status
JkMount /sws/* local

Here's my workers.properties:

worker.list=local,status
worker.local.type=ajp13
worker.local.port=8009
worker.local.host=localhost
worker.status.type=status
worker.status.port=8009
worker.status.host=localhost

Anyone see any glaring mistakes or oddities? As I mentioned earlier, the same 
setup worked fine. The only trigger that I can think of is the slight increase 
in file size.

Any help appreciated.

thanks,
--
Haroon Rafique
<ha...@utoronto.ca>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: mod_jk problem when streaming files larger than ~400k (causes ClientAbortException)

Posted by Henri Gomez <he...@gmail.com>.
the problem occurs in both local and lan configurations.

I solved it by disabling use of Apr.

2006/12/7, Haroon Rafique <ha...@utoronto.ca>:
> On Today at 11:48am, HG=>Henri Gomez <he...@gmail.com> wrote:
>
> HG> The problem is still here in future jk 1.2.20
> HG>
>
>
> Hi Henri,
>
> I didn't try with 1.2.20 but will take your word for it.
>
> more below...
>
>
> HG> 2006/12/7, Henri Gomez <he...@gmail.com>:
> HG> > More on this.
> HG> >
> HG> > The problem seems to occurs in network mode and never in local mode.
> HG> >
> HG> > Didn't have problem between Apache 2 and Tomcat 6.0.2 when both are on
> HG> > the same machine :
> HG> >
> HG> > worker.local.type=ajp13
> HG> > worker.local.port=8009
> HG> > worker.local.host=localhost
> HG> >
>
>
> My situation is the opposite. I have apache 2.0.59 and tomcat 5.5.20 on
> the same machine (local) and the problem occurs. I never tried with
> network.
>
> I will make a bugzilla issue and post a .war file and maven project to
> demonstrate.
>
> Cheers,
> --
> Haroon Rafique
> <ha...@utoronto.ca>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: mod_jk problem when streaming files larger than ~400k (causes ClientAbortException)

Posted by Haroon Rafique <ha...@utoronto.ca>.
On Today at 11:48am, HG=>Henri Gomez <he...@gmail.com> wrote:

HG> The problem is still here in future jk 1.2.20
HG> 


Hi Henri,

I didn't try with 1.2.20 but will take your word for it.

more below...


HG> 2006/12/7, Henri Gomez <he...@gmail.com>:
HG> > More on this.
HG> >
HG> > The problem seems to occurs in network mode and never in local mode.
HG> >
HG> > Didn't have problem between Apache 2 and Tomcat 6.0.2 when both are on
HG> > the same machine :
HG> >
HG> > worker.local.type=ajp13
HG> > worker.local.port=8009
HG> > worker.local.host=localhost
HG> >


My situation is the opposite. I have apache 2.0.59 and tomcat 5.5.20 on 
the same machine (local) and the problem occurs. I never tried with 
network.

I will make a bugzilla issue and post a .war file and maven project to 
demonstrate.

Cheers,
--
Haroon Rafique
<ha...@utoronto.ca>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: mod_jk problem when streaming files larger than ~400k (causes ClientAbortException)

Posted by Henri Gomez <he...@gmail.com>.
Well I switched to Tomcat 6.x ,(

2006/12/7, Jean-Frederic <jf...@gmail.com>:
> On Thu, 2006-12-07 at 11:48 +0100, Henri Gomez wrote:
> > The problem is still here in future jk 1.2.20
>
> I can't reproduce something like that with 5.5.17, could you try with a
> TC5.5.x?
>
> Cheers
>
> Jean-Frederic
>
> >
> > 2006/12/7, Henri Gomez <he...@gmail.com>:
> > > More on this.
> > >
> > > The problem seems to occurs in network mode and never in local mode.
> > >
> > > Didn't have problem between Apache 2 and Tomcat 6.0.2 when both are on
> > > the same machine :
> > >
> > > worker.local.type=ajp13
> > > worker.local.port=8009
> > > worker.local.host=localhost
> > >
> > > If the local worker goes to network, the problem occurs.
> > >
> > > Very stange, I'll try with to be released 1.2.20 mod_jk
> > >
> > > 2006/12/7, Henri Gomez <he...@gmail.com>:
> > > > Same problem here with much smaller PDF and Tomcat 6.0.2 :
> > > >
> > > > As you could see the problem occurs between 81920 and 90112 bytes sent ;(
> > > >
> > > > The problem may be related to Apache2 level, since I've got this
> > > > problem on some Suse SLES 9 system where Apache2 RPM is not up to
> > > > date.
> > > >
> > > > file to be sent is 162748 long, iosize=8192
> > > >
> > > > lReadLen=8192
> > > > lSentLen=8192
> > > > lReadLen=8192
> > > > lSentLen=16384
> > > > lReadLen=8192
> > > > lSentLen=24576
> > > > lReadLen=8192
> > > > lSentLen=32768
> > > > lReadLen=8192
> > > > lSentLen=40960
> > > > lReadLen=8192
> > > > lSentLen=49152
> > > > lReadLen=8192
> > > > lSentLen=57344
> > > > lReadLen=8192
> > > > lSentLen=65536
> > > > lReadLen=8192
> > > > lSentLen=73728
> > > > lReadLen=8192
> > > > lSentLen=81920
> > > > lReadLen=8192
> > > > stackTrace is ClientAbortException:  java.io.IOException
> > > >         at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:357)
> > > >         at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
> > > >         at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349)
> > > >         at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:380)
> > > >         at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:369)
> > > >         at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
> > > >
> > > >
> > > >
> > > >
> > > > 2006/12/5, Haroon Rafique <ha...@utoronto.ca>:
> > > > > Hi Devs,
> > > > >
> > > > > I sent this to the user list without any responses. I am looking for some
> > > > > insight from the dev list. You can also see the nabble archive of the
> > > > > user-list posting at
> > > > > http://www.nabble.com/mod_jk-problem-when-streaming-files-larger-than-%7E400k-%28causes-ClientAbortException%29-t2756411.html
> > > > >
> > > > > If I don't get any responses, then I can submit a bugzilla bug with a
> > > > > "testcase" war file and its source (maven driven) so that the devs can
> > > > > play around with it.
> > > > >
> > > > > Cheers,
> > > > > --
> > > > > Haroon Rafique
> > > > > <ha...@utoronto.ca>
> > > > >
> > > > >
> > > > > ---------- Forwarded message ----------
> > > > > Date: Mon, 4 Dec 2006 15:01:19 -0500 (EST)
> > > > > From: Haroon Rafique <ha...@utoronto.ca>
> > > > > To: users@tomcat.apache.org
> > > > > Subject: mod_jk problem when streaming files larger than ~400k (causes
> > > > >      ClientAbortException)
> > > > >
> > > > > Hi,
> > > > >
> > > > > I am using mod_jk 1.2.19 on Linux with JDK 1.5.0_08, tomcat 5.5.20. Our
> > > > > application is struts-based and in one of our actions we stream a PDF to the
> > > > > client. The pseudo-code for outputting the response back to the client is as
> > > > > follows (assuming baos contains a ByteArrayOutputStream):
> > > > >
> > > > >               OutputStream out = response.getOutputStream();
> > > > >               baos.writeTo(out);
> > > > >               out.flush();
> > > > >               out.close();
> > > > >
> > > > > We noticed no problems when the size of baos was less than 400k. Now the
> > > > > filesize has jumped to a little greater than 400k. With mod_jk in the picture,
> > > > > intermittently (not all the time), we get ClientAbortException:
> > > > >
> > > > >       Caused by: ClientAbortException:  java.io.IOException
> > > > >           at
> > > > >           org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366)
> > > > >
> > > > > The end result being that the PDF is truncated and Acrobat considers it
> > > > > damaged.
> > > > >
> > > > > Without mod_jk in the picture, everything is fine.
> > > > >
> > > > > Turning up the mod_jk logging to debug gave me too much info. Turning it down
> > > > > to info gave me some clues. Basically, there are 3 flavors of the failures.
> > > > > Maybe they are all the same but it might appear different to a
> > > > > trained eye, so I'm posting all three.
> > > > >
> > > > > Flavor 1 error:
> > > > > ===============
> > > > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > > > >       ajp_connection_tcp_get_message::
> > > > >       jk_ajp_common.c (941): (local) Tomcat has forced a connection close for
> > > > >       socket 22
> > > > > [Mon Dec 04 14:28:59 2006] [25445:9920] [error]
> > > > >       ajp_get_reply::jk_ajp_common.c (1562): (local) Tomcat is down or network
> > > > >       problems. Part of the response has already been sent to the client
> > > > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > > > >       ajp_service::jk_ajp_common.c (18 28): (local) receiving from tomcat
> > > > >       failed,
> > > > >       recoverable operation attempt=0
> > > > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > > > >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> > > > >       failed,
> > > > >       recoverable operation attempt=1
> > > > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > > > >       ajp_process_callback::jk_ajp_common.c (1410): Writing to client aborted or
> > > > >       client
> > > > >       network problems
> > > > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > > > >       ajp_service::jk_ajp_common.c (1795): (local) request failed, because of
> > > > >       client
> > > > >       write error without recovery in send loop attempt=1
> > > > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > > > >       jk_handler::mod_jk.c (2056): Aborting connection for worker=local
> > > > >
> > > > > Flavor 2 error:
> > > > > ===============
> > > > > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> > > > >       ajp_send_request::jk_ajp_common.c (1170): (local) socket 22 is not
> > > > >       connected
> > > > >       any more (errno=0)
> > > > > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> > > > >       ajp_send_request::jk_ajp_common.c (1194): (local) error sending request.
> > > > >       Will
> > > > >       try another pooled connection
> > > > > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> > > > >       ajp_send_request::jk_ajp_common.c (1218): (local) all endpoints are
> > > > >       disconnected
> > > > >       or dead
> > > > > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> > > > >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> > > > >       failed,
> > > > >       recoverable operation attempt=1
> > > > > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> > > > >       ajp_connection_tcp_get_message::jk_ajp_common.c (941): (local) Tomcat has
> > > > >       forced a connection close for socket 22
> > > > > [Mon Dec 04 14:30:32 2006] [25448:9920] [error]
> > > > >       ajp_get_reply::jk_ajp_common.c (1562): (local) Tomcat is down or network
> > > > >       problems. Part of the response has already been sent to the client
> > > > > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> > > > >       ajp_service::jk_ajp_common.c (1828): (local) receiving from tomcat failed,
> > > > >       recoverable operation attempt=1
> > > > > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> > > > >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> > > > >       failed,
> > > > >       recoverable operation attempt=2
> > > > > [Mon Dec 04 14:30:32 2006] [25448:9920] [error]
> > > > >       ajp_service::jk_ajp_common.c (1879): (local) Connecting to tomcat failed.
> > > > >       Tomcat is probably not started or is listening on the wrong port
> > > > > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> > > > >       jk_handler::mod_jk.c (2063): Service error=0 for worker=local
> > > > >
> > > > > Flavor 3 error:
> > > > > ===============
> > > > > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> > > > >       ajp_send_request::jk_ajp_common.c (1170): (local) socket 22 is not
> > > > >       connected any more (errno=0)
> > > > > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> > > > >       ajp_send_request::jk_ajp_common.c (1194): (local) error sending
> > > > >       request.  Will try another pooled connection
> > > > > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> > > > >       ajp_send_request::jk_ajp_common.c (1218): (local) all endpoints are
> > > > >       disconnected or dead
> > > > > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> > > > >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> > > > >       failed,  recoverable operation attempt=1
> > > > >
> > > > >
> > > > > Does anyone have any experience with streaming large files using mod_jk? If I
> > > > > don't get any responses I will try the dev list.
> > > > >
> > > > > Here's my mod_jk.conf:
> > > > >
> > > > > LoadModule jk_module modules/mod_jk.so
> > > > > JkWorkersFile conf/workers.properties
> > > > > JkLogFile logs/mod_jk.log
> > > > > JkLogLevel info
> > > > > JkShmFile logs/mod_jk.shm
> > > > > JkMount /jkstatus/ status
> > > > > JkMount /sws/* local
> > > > >
> > > > > Here's my workers.properties:
> > > > >
> > > > > worker.list=local,status
> > > > > worker.local.type=ajp13
> > > > > worker.local.port=8009
> > > > > worker.local.host=localhost
> > > > > worker.status.type=status
> > > > > worker.status.port=8009
> > > > > worker.status.host=localhost
> > > > >
> > > > > Anyone see any glaring mistakes or oddities? As I mentioned earlier, the same
> > > > > setup worked fine. The only trigger that I can think of is the slight increase
> > > > > in file size.
> > > > >
> > > > > Any help appreciated.
> > > > >
> > > > > thanks,
> > > > > --
> > > > > Haroon Rafique
> > > > > <ha...@utoronto.ca>
> > > > >
> > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> > > > > For additional commands, e-mail: dev-help@tomcat.apache.org
> > > > >
> > > > >
> > > >
> > >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> > For additional commands, e-mail: dev-help@tomcat.apache.org
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: mod_jk problem when streaming files larger than ~400k (causes ClientAbortException)

Posted by Haroon Rafique <ha...@utoronto.ca>.
On Today at 3:11pm, J=>Jean-Frederic <jf...@gmail.com> wrote:

J> 
J> I can't reproduce something like that with 5.5.17, could you try with a
J> TC5.5.x?
J> 
J> Cheers
J> 
J> Jean-Frederic

Hi Jean,

My reported problem occurs on 5.5.20.

Regards,
--
Haroon Rafique
<ha...@utoronto.ca>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: mod_jk problem when streaming files larger than ~400k (causes ClientAbortException)

Posted by Jean-Frederic <jf...@gmail.com>.
On Thu, 2006-12-07 at 11:48 +0100, Henri Gomez wrote:
> The problem is still here in future jk 1.2.20

I can't reproduce something like that with 5.5.17, could you try with a
TC5.5.x?

Cheers

Jean-Frederic

> 
> 2006/12/7, Henri Gomez <he...@gmail.com>:
> > More on this.
> >
> > The problem seems to occurs in network mode and never in local mode.
> >
> > Didn't have problem between Apache 2 and Tomcat 6.0.2 when both are on
> > the same machine :
> >
> > worker.local.type=ajp13
> > worker.local.port=8009
> > worker.local.host=localhost
> >
> > If the local worker goes to network, the problem occurs.
> >
> > Very stange, I'll try with to be released 1.2.20 mod_jk
> >
> > 2006/12/7, Henri Gomez <he...@gmail.com>:
> > > Same problem here with much smaller PDF and Tomcat 6.0.2 :
> > >
> > > As you could see the problem occurs between 81920 and 90112 bytes sent ;(
> > >
> > > The problem may be related to Apache2 level, since I've got this
> > > problem on some Suse SLES 9 system where Apache2 RPM is not up to
> > > date.
> > >
> > > file to be sent is 162748 long, iosize=8192
> > >
> > > lReadLen=8192
> > > lSentLen=8192
> > > lReadLen=8192
> > > lSentLen=16384
> > > lReadLen=8192
> > > lSentLen=24576
> > > lReadLen=8192
> > > lSentLen=32768
> > > lReadLen=8192
> > > lSentLen=40960
> > > lReadLen=8192
> > > lSentLen=49152
> > > lReadLen=8192
> > > lSentLen=57344
> > > lReadLen=8192
> > > lSentLen=65536
> > > lReadLen=8192
> > > lSentLen=73728
> > > lReadLen=8192
> > > lSentLen=81920
> > > lReadLen=8192
> > > stackTrace is ClientAbortException:  java.io.IOException
> > >         at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:357)
> > >         at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
> > >         at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349)
> > >         at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:380)
> > >         at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:369)
> > >         at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
> > >
> > >
> > >
> > >
> > > 2006/12/5, Haroon Rafique <ha...@utoronto.ca>:
> > > > Hi Devs,
> > > >
> > > > I sent this to the user list without any responses. I am looking for some
> > > > insight from the dev list. You can also see the nabble archive of the
> > > > user-list posting at
> > > > http://www.nabble.com/mod_jk-problem-when-streaming-files-larger-than-%7E400k-%28causes-ClientAbortException%29-t2756411.html
> > > >
> > > > If I don't get any responses, then I can submit a bugzilla bug with a
> > > > "testcase" war file and its source (maven driven) so that the devs can
> > > > play around with it.
> > > >
> > > > Cheers,
> > > > --
> > > > Haroon Rafique
> > > > <ha...@utoronto.ca>
> > > >
> > > >
> > > > ---------- Forwarded message ----------
> > > > Date: Mon, 4 Dec 2006 15:01:19 -0500 (EST)
> > > > From: Haroon Rafique <ha...@utoronto.ca>
> > > > To: users@tomcat.apache.org
> > > > Subject: mod_jk problem when streaming files larger than ~400k (causes
> > > >      ClientAbortException)
> > > >
> > > > Hi,
> > > >
> > > > I am using mod_jk 1.2.19 on Linux with JDK 1.5.0_08, tomcat 5.5.20. Our
> > > > application is struts-based and in one of our actions we stream a PDF to the
> > > > client. The pseudo-code for outputting the response back to the client is as
> > > > follows (assuming baos contains a ByteArrayOutputStream):
> > > >
> > > >               OutputStream out = response.getOutputStream();
> > > >               baos.writeTo(out);
> > > >               out.flush();
> > > >               out.close();
> > > >
> > > > We noticed no problems when the size of baos was less than 400k. Now the
> > > > filesize has jumped to a little greater than 400k. With mod_jk in the picture,
> > > > intermittently (not all the time), we get ClientAbortException:
> > > >
> > > >       Caused by: ClientAbortException:  java.io.IOException
> > > >           at
> > > >           org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366)
> > > >
> > > > The end result being that the PDF is truncated and Acrobat considers it
> > > > damaged.
> > > >
> > > > Without mod_jk in the picture, everything is fine.
> > > >
> > > > Turning up the mod_jk logging to debug gave me too much info. Turning it down
> > > > to info gave me some clues. Basically, there are 3 flavors of the failures.
> > > > Maybe they are all the same but it might appear different to a
> > > > trained eye, so I'm posting all three.
> > > >
> > > > Flavor 1 error:
> > > > ===============
> > > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > > >       ajp_connection_tcp_get_message::
> > > >       jk_ajp_common.c (941): (local) Tomcat has forced a connection close for
> > > >       socket 22
> > > > [Mon Dec 04 14:28:59 2006] [25445:9920] [error]
> > > >       ajp_get_reply::jk_ajp_common.c (1562): (local) Tomcat is down or network
> > > >       problems. Part of the response has already been sent to the client
> > > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > > >       ajp_service::jk_ajp_common.c (18 28): (local) receiving from tomcat
> > > >       failed,
> > > >       recoverable operation attempt=0
> > > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > > >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> > > >       failed,
> > > >       recoverable operation attempt=1
> > > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > > >       ajp_process_callback::jk_ajp_common.c (1410): Writing to client aborted or
> > > >       client
> > > >       network problems
> > > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > > >       ajp_service::jk_ajp_common.c (1795): (local) request failed, because of
> > > >       client
> > > >       write error without recovery in send loop attempt=1
> > > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > > >       jk_handler::mod_jk.c (2056): Aborting connection for worker=local
> > > >
> > > > Flavor 2 error:
> > > > ===============
> > > > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> > > >       ajp_send_request::jk_ajp_common.c (1170): (local) socket 22 is not
> > > >       connected
> > > >       any more (errno=0)
> > > > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> > > >       ajp_send_request::jk_ajp_common.c (1194): (local) error sending request.
> > > >       Will
> > > >       try another pooled connection
> > > > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> > > >       ajp_send_request::jk_ajp_common.c (1218): (local) all endpoints are
> > > >       disconnected
> > > >       or dead
> > > > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> > > >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> > > >       failed,
> > > >       recoverable operation attempt=1
> > > > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> > > >       ajp_connection_tcp_get_message::jk_ajp_common.c (941): (local) Tomcat has
> > > >       forced a connection close for socket 22
> > > > [Mon Dec 04 14:30:32 2006] [25448:9920] [error]
> > > >       ajp_get_reply::jk_ajp_common.c (1562): (local) Tomcat is down or network
> > > >       problems. Part of the response has already been sent to the client
> > > > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> > > >       ajp_service::jk_ajp_common.c (1828): (local) receiving from tomcat failed,
> > > >       recoverable operation attempt=1
> > > > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> > > >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> > > >       failed,
> > > >       recoverable operation attempt=2
> > > > [Mon Dec 04 14:30:32 2006] [25448:9920] [error]
> > > >       ajp_service::jk_ajp_common.c (1879): (local) Connecting to tomcat failed.
> > > >       Tomcat is probably not started or is listening on the wrong port
> > > > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> > > >       jk_handler::mod_jk.c (2063): Service error=0 for worker=local
> > > >
> > > > Flavor 3 error:
> > > > ===============
> > > > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> > > >       ajp_send_request::jk_ajp_common.c (1170): (local) socket 22 is not
> > > >       connected any more (errno=0)
> > > > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> > > >       ajp_send_request::jk_ajp_common.c (1194): (local) error sending
> > > >       request.  Will try another pooled connection
> > > > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> > > >       ajp_send_request::jk_ajp_common.c (1218): (local) all endpoints are
> > > >       disconnected or dead
> > > > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> > > >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> > > >       failed,  recoverable operation attempt=1
> > > >
> > > >
> > > > Does anyone have any experience with streaming large files using mod_jk? If I
> > > > don't get any responses I will try the dev list.
> > > >
> > > > Here's my mod_jk.conf:
> > > >
> > > > LoadModule jk_module modules/mod_jk.so
> > > > JkWorkersFile conf/workers.properties
> > > > JkLogFile logs/mod_jk.log
> > > > JkLogLevel info
> > > > JkShmFile logs/mod_jk.shm
> > > > JkMount /jkstatus/ status
> > > > JkMount /sws/* local
> > > >
> > > > Here's my workers.properties:
> > > >
> > > > worker.list=local,status
> > > > worker.local.type=ajp13
> > > > worker.local.port=8009
> > > > worker.local.host=localhost
> > > > worker.status.type=status
> > > > worker.status.port=8009
> > > > worker.status.host=localhost
> > > >
> > > > Anyone see any glaring mistakes or oddities? As I mentioned earlier, the same
> > > > setup worked fine. The only trigger that I can think of is the slight increase
> > > > in file size.
> > > >
> > > > Any help appreciated.
> > > >
> > > > thanks,
> > > > --
> > > > Haroon Rafique
> > > > <ha...@utoronto.ca>
> > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> > > > For additional commands, e-mail: dev-help@tomcat.apache.org
> > > >
> > > >
> > >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: mod_jk problem when streaming files larger than ~400k (causes ClientAbortException)

Posted by Henri Gomez <he...@gmail.com>.
The problem is still here in future jk 1.2.20

2006/12/7, Henri Gomez <he...@gmail.com>:
> More on this.
>
> The problem seems to occurs in network mode and never in local mode.
>
> Didn't have problem between Apache 2 and Tomcat 6.0.2 when both are on
> the same machine :
>
> worker.local.type=ajp13
> worker.local.port=8009
> worker.local.host=localhost
>
> If the local worker goes to network, the problem occurs.
>
> Very stange, I'll try with to be released 1.2.20 mod_jk
>
> 2006/12/7, Henri Gomez <he...@gmail.com>:
> > Same problem here with much smaller PDF and Tomcat 6.0.2 :
> >
> > As you could see the problem occurs between 81920 and 90112 bytes sent ;(
> >
> > The problem may be related to Apache2 level, since I've got this
> > problem on some Suse SLES 9 system where Apache2 RPM is not up to
> > date.
> >
> > file to be sent is 162748 long, iosize=8192
> >
> > lReadLen=8192
> > lSentLen=8192
> > lReadLen=8192
> > lSentLen=16384
> > lReadLen=8192
> > lSentLen=24576
> > lReadLen=8192
> > lSentLen=32768
> > lReadLen=8192
> > lSentLen=40960
> > lReadLen=8192
> > lSentLen=49152
> > lReadLen=8192
> > lSentLen=57344
> > lReadLen=8192
> > lSentLen=65536
> > lReadLen=8192
> > lSentLen=73728
> > lReadLen=8192
> > lSentLen=81920
> > lReadLen=8192
> > stackTrace is ClientAbortException:  java.io.IOException
> >         at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:357)
> >         at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
> >         at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349)
> >         at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:380)
> >         at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:369)
> >         at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
> >
> >
> >
> >
> > 2006/12/5, Haroon Rafique <ha...@utoronto.ca>:
> > > Hi Devs,
> > >
> > > I sent this to the user list without any responses. I am looking for some
> > > insight from the dev list. You can also see the nabble archive of the
> > > user-list posting at
> > > http://www.nabble.com/mod_jk-problem-when-streaming-files-larger-than-%7E400k-%28causes-ClientAbortException%29-t2756411.html
> > >
> > > If I don't get any responses, then I can submit a bugzilla bug with a
> > > "testcase" war file and its source (maven driven) so that the devs can
> > > play around with it.
> > >
> > > Cheers,
> > > --
> > > Haroon Rafique
> > > <ha...@utoronto.ca>
> > >
> > >
> > > ---------- Forwarded message ----------
> > > Date: Mon, 4 Dec 2006 15:01:19 -0500 (EST)
> > > From: Haroon Rafique <ha...@utoronto.ca>
> > > To: users@tomcat.apache.org
> > > Subject: mod_jk problem when streaming files larger than ~400k (causes
> > >      ClientAbortException)
> > >
> > > Hi,
> > >
> > > I am using mod_jk 1.2.19 on Linux with JDK 1.5.0_08, tomcat 5.5.20. Our
> > > application is struts-based and in one of our actions we stream a PDF to the
> > > client. The pseudo-code for outputting the response back to the client is as
> > > follows (assuming baos contains a ByteArrayOutputStream):
> > >
> > >               OutputStream out = response.getOutputStream();
> > >               baos.writeTo(out);
> > >               out.flush();
> > >               out.close();
> > >
> > > We noticed no problems when the size of baos was less than 400k. Now the
> > > filesize has jumped to a little greater than 400k. With mod_jk in the picture,
> > > intermittently (not all the time), we get ClientAbortException:
> > >
> > >       Caused by: ClientAbortException:  java.io.IOException
> > >           at
> > >           org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366)
> > >
> > > The end result being that the PDF is truncated and Acrobat considers it
> > > damaged.
> > >
> > > Without mod_jk in the picture, everything is fine.
> > >
> > > Turning up the mod_jk logging to debug gave me too much info. Turning it down
> > > to info gave me some clues. Basically, there are 3 flavors of the failures.
> > > Maybe they are all the same but it might appear different to a
> > > trained eye, so I'm posting all three.
> > >
> > > Flavor 1 error:
> > > ===============
> > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > >       ajp_connection_tcp_get_message::
> > >       jk_ajp_common.c (941): (local) Tomcat has forced a connection close for
> > >       socket 22
> > > [Mon Dec 04 14:28:59 2006] [25445:9920] [error]
> > >       ajp_get_reply::jk_ajp_common.c (1562): (local) Tomcat is down or network
> > >       problems. Part of the response has already been sent to the client
> > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > >       ajp_service::jk_ajp_common.c (18 28): (local) receiving from tomcat
> > >       failed,
> > >       recoverable operation attempt=0
> > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> > >       failed,
> > >       recoverable operation attempt=1
> > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > >       ajp_process_callback::jk_ajp_common.c (1410): Writing to client aborted or
> > >       client
> > >       network problems
> > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > >       ajp_service::jk_ajp_common.c (1795): (local) request failed, because of
> > >       client
> > >       write error without recovery in send loop attempt=1
> > > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> > >       jk_handler::mod_jk.c (2056): Aborting connection for worker=local
> > >
> > > Flavor 2 error:
> > > ===============
> > > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> > >       ajp_send_request::jk_ajp_common.c (1170): (local) socket 22 is not
> > >       connected
> > >       any more (errno=0)
> > > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> > >       ajp_send_request::jk_ajp_common.c (1194): (local) error sending request.
> > >       Will
> > >       try another pooled connection
> > > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> > >       ajp_send_request::jk_ajp_common.c (1218): (local) all endpoints are
> > >       disconnected
> > >       or dead
> > > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> > >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> > >       failed,
> > >       recoverable operation attempt=1
> > > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> > >       ajp_connection_tcp_get_message::jk_ajp_common.c (941): (local) Tomcat has
> > >       forced a connection close for socket 22
> > > [Mon Dec 04 14:30:32 2006] [25448:9920] [error]
> > >       ajp_get_reply::jk_ajp_common.c (1562): (local) Tomcat is down or network
> > >       problems. Part of the response has already been sent to the client
> > > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> > >       ajp_service::jk_ajp_common.c (1828): (local) receiving from tomcat failed,
> > >       recoverable operation attempt=1
> > > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> > >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> > >       failed,
> > >       recoverable operation attempt=2
> > > [Mon Dec 04 14:30:32 2006] [25448:9920] [error]
> > >       ajp_service::jk_ajp_common.c (1879): (local) Connecting to tomcat failed.
> > >       Tomcat is probably not started or is listening on the wrong port
> > > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> > >       jk_handler::mod_jk.c (2063): Service error=0 for worker=local
> > >
> > > Flavor 3 error:
> > > ===============
> > > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> > >       ajp_send_request::jk_ajp_common.c (1170): (local) socket 22 is not
> > >       connected any more (errno=0)
> > > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> > >       ajp_send_request::jk_ajp_common.c (1194): (local) error sending
> > >       request.  Will try another pooled connection
> > > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> > >       ajp_send_request::jk_ajp_common.c (1218): (local) all endpoints are
> > >       disconnected or dead
> > > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> > >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> > >       failed,  recoverable operation attempt=1
> > >
> > >
> > > Does anyone have any experience with streaming large files using mod_jk? If I
> > > don't get any responses I will try the dev list.
> > >
> > > Here's my mod_jk.conf:
> > >
> > > LoadModule jk_module modules/mod_jk.so
> > > JkWorkersFile conf/workers.properties
> > > JkLogFile logs/mod_jk.log
> > > JkLogLevel info
> > > JkShmFile logs/mod_jk.shm
> > > JkMount /jkstatus/ status
> > > JkMount /sws/* local
> > >
> > > Here's my workers.properties:
> > >
> > > worker.list=local,status
> > > worker.local.type=ajp13
> > > worker.local.port=8009
> > > worker.local.host=localhost
> > > worker.status.type=status
> > > worker.status.port=8009
> > > worker.status.host=localhost
> > >
> > > Anyone see any glaring mistakes or oddities? As I mentioned earlier, the same
> > > setup worked fine. The only trigger that I can think of is the slight increase
> > > in file size.
> > >
> > > Any help appreciated.
> > >
> > > thanks,
> > > --
> > > Haroon Rafique
> > > <ha...@utoronto.ca>
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> > > For additional commands, e-mail: dev-help@tomcat.apache.org
> > >
> > >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: mod_jk problem when streaming files larger than ~400k (causes ClientAbortException)

Posted by Henri Gomez <he...@gmail.com>.
More on this.

The problem seems to occurs in network mode and never in local mode.

Didn't have problem between Apache 2 and Tomcat 6.0.2 when both are on
the same machine :

worker.local.type=ajp13
worker.local.port=8009
worker.local.host=localhost

If the local worker goes to network, the problem occurs.

Very stange, I'll try with to be released 1.2.20 mod_jk

2006/12/7, Henri Gomez <he...@gmail.com>:
> Same problem here with much smaller PDF and Tomcat 6.0.2 :
>
> As you could see the problem occurs between 81920 and 90112 bytes sent ;(
>
> The problem may be related to Apache2 level, since I've got this
> problem on some Suse SLES 9 system where Apache2 RPM is not up to
> date.
>
> file to be sent is 162748 long, iosize=8192
>
> lReadLen=8192
> lSentLen=8192
> lReadLen=8192
> lSentLen=16384
> lReadLen=8192
> lSentLen=24576
> lReadLen=8192
> lSentLen=32768
> lReadLen=8192
> lSentLen=40960
> lReadLen=8192
> lSentLen=49152
> lReadLen=8192
> lSentLen=57344
> lReadLen=8192
> lSentLen=65536
> lReadLen=8192
> lSentLen=73728
> lReadLen=8192
> lSentLen=81920
> lReadLen=8192
> stackTrace is ClientAbortException:  java.io.IOException
>         at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:357)
>         at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
>         at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349)
>         at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:380)
>         at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:369)
>         at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)
>
>
>
>
> 2006/12/5, Haroon Rafique <ha...@utoronto.ca>:
> > Hi Devs,
> >
> > I sent this to the user list without any responses. I am looking for some
> > insight from the dev list. You can also see the nabble archive of the
> > user-list posting at
> > http://www.nabble.com/mod_jk-problem-when-streaming-files-larger-than-%7E400k-%28causes-ClientAbortException%29-t2756411.html
> >
> > If I don't get any responses, then I can submit a bugzilla bug with a
> > "testcase" war file and its source (maven driven) so that the devs can
> > play around with it.
> >
> > Cheers,
> > --
> > Haroon Rafique
> > <ha...@utoronto.ca>
> >
> >
> > ---------- Forwarded message ----------
> > Date: Mon, 4 Dec 2006 15:01:19 -0500 (EST)
> > From: Haroon Rafique <ha...@utoronto.ca>
> > To: users@tomcat.apache.org
> > Subject: mod_jk problem when streaming files larger than ~400k (causes
> >      ClientAbortException)
> >
> > Hi,
> >
> > I am using mod_jk 1.2.19 on Linux with JDK 1.5.0_08, tomcat 5.5.20. Our
> > application is struts-based and in one of our actions we stream a PDF to the
> > client. The pseudo-code for outputting the response back to the client is as
> > follows (assuming baos contains a ByteArrayOutputStream):
> >
> >               OutputStream out = response.getOutputStream();
> >               baos.writeTo(out);
> >               out.flush();
> >               out.close();
> >
> > We noticed no problems when the size of baos was less than 400k. Now the
> > filesize has jumped to a little greater than 400k. With mod_jk in the picture,
> > intermittently (not all the time), we get ClientAbortException:
> >
> >       Caused by: ClientAbortException:  java.io.IOException
> >           at
> >           org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366)
> >
> > The end result being that the PDF is truncated and Acrobat considers it
> > damaged.
> >
> > Without mod_jk in the picture, everything is fine.
> >
> > Turning up the mod_jk logging to debug gave me too much info. Turning it down
> > to info gave me some clues. Basically, there are 3 flavors of the failures.
> > Maybe they are all the same but it might appear different to a
> > trained eye, so I'm posting all three.
> >
> > Flavor 1 error:
> > ===============
> > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> >       ajp_connection_tcp_get_message::
> >       jk_ajp_common.c (941): (local) Tomcat has forced a connection close for
> >       socket 22
> > [Mon Dec 04 14:28:59 2006] [25445:9920] [error]
> >       ajp_get_reply::jk_ajp_common.c (1562): (local) Tomcat is down or network
> >       problems. Part of the response has already been sent to the client
> > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> >       ajp_service::jk_ajp_common.c (18 28): (local) receiving from tomcat
> >       failed,
> >       recoverable operation attempt=0
> > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> >       failed,
> >       recoverable operation attempt=1
> > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> >       ajp_process_callback::jk_ajp_common.c (1410): Writing to client aborted or
> >       client
> >       network problems
> > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> >       ajp_service::jk_ajp_common.c (1795): (local) request failed, because of
> >       client
> >       write error without recovery in send loop attempt=1
> > [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
> >       jk_handler::mod_jk.c (2056): Aborting connection for worker=local
> >
> > Flavor 2 error:
> > ===============
> > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> >       ajp_send_request::jk_ajp_common.c (1170): (local) socket 22 is not
> >       connected
> >       any more (errno=0)
> > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> >       ajp_send_request::jk_ajp_common.c (1194): (local) error sending request.
> >       Will
> >       try another pooled connection
> > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> >       ajp_send_request::jk_ajp_common.c (1218): (local) all endpoints are
> >       disconnected
> >       or dead
> > [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
> >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> >       failed,
> >       recoverable operation attempt=1
> > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> >       ajp_connection_tcp_get_message::jk_ajp_common.c (941): (local) Tomcat has
> >       forced a connection close for socket 22
> > [Mon Dec 04 14:30:32 2006] [25448:9920] [error]
> >       ajp_get_reply::jk_ajp_common.c (1562): (local) Tomcat is down or network
> >       problems. Part of the response has already been sent to the client
> > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> >       ajp_service::jk_ajp_common.c (1828): (local) receiving from tomcat failed,
> >       recoverable operation attempt=1
> > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> >       failed,
> >       recoverable operation attempt=2
> > [Mon Dec 04 14:30:32 2006] [25448:9920] [error]
> >       ajp_service::jk_ajp_common.c (1879): (local) Connecting to tomcat failed.
> >       Tomcat is probably not started or is listening on the wrong port
> > [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
> >       jk_handler::mod_jk.c (2063): Service error=0 for worker=local
> >
> > Flavor 3 error:
> > ===============
> > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> >       ajp_send_request::jk_ajp_common.c (1170): (local) socket 22 is not
> >       connected any more (errno=0)
> > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> >       ajp_send_request::jk_ajp_common.c (1194): (local) error sending
> >       request.  Will try another pooled connection
> > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> >       ajp_send_request::jk_ajp_common.c (1218): (local) all endpoints are
> >       disconnected or dead
> > [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
> >       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
> >       failed,  recoverable operation attempt=1
> >
> >
> > Does anyone have any experience with streaming large files using mod_jk? If I
> > don't get any responses I will try the dev list.
> >
> > Here's my mod_jk.conf:
> >
> > LoadModule jk_module modules/mod_jk.so
> > JkWorkersFile conf/workers.properties
> > JkLogFile logs/mod_jk.log
> > JkLogLevel info
> > JkShmFile logs/mod_jk.shm
> > JkMount /jkstatus/ status
> > JkMount /sws/* local
> >
> > Here's my workers.properties:
> >
> > worker.list=local,status
> > worker.local.type=ajp13
> > worker.local.port=8009
> > worker.local.host=localhost
> > worker.status.type=status
> > worker.status.port=8009
> > worker.status.host=localhost
> >
> > Anyone see any glaring mistakes or oddities? As I mentioned earlier, the same
> > setup worked fine. The only trigger that I can think of is the slight increase
> > in file size.
> >
> > Any help appreciated.
> >
> > thanks,
> > --
> > Haroon Rafique
> > <ha...@utoronto.ca>
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> > For additional commands, e-mail: dev-help@tomcat.apache.org
> >
> >
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Re: mod_jk problem when streaming files larger than ~400k (causes ClientAbortException)

Posted by Henri Gomez <he...@gmail.com>.
Same problem here with much smaller PDF and Tomcat 6.0.2 :

As you could see the problem occurs between 81920 and 90112 bytes sent ;(

The problem may be related to Apache2 level, since I've got this
problem on some Suse SLES 9 system where Apache2 RPM is not up to
date.

file to be sent is 162748 long, iosize=8192

lReadLen=8192
lSentLen=8192
lReadLen=8192
lSentLen=16384
lReadLen=8192
lSentLen=24576
lReadLen=8192
lSentLen=32768
lReadLen=8192
lSentLen=40960
lReadLen=8192
lSentLen=49152
lReadLen=8192
lSentLen=57344
lReadLen=8192
lSentLen=65536
lReadLen=8192
lSentLen=73728
lReadLen=8192
lSentLen=81920
lReadLen=8192
stackTrace is ClientAbortException:  java.io.IOException
        at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:357)
        at org.apache.tomcat.util.buf.ByteChunk.flushBuffer(ByteChunk.java:434)
        at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:349)
        at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:380)
        at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:369)
        at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:89)




2006/12/5, Haroon Rafique <ha...@utoronto.ca>:
> Hi Devs,
>
> I sent this to the user list without any responses. I am looking for some
> insight from the dev list. You can also see the nabble archive of the
> user-list posting at
> http://www.nabble.com/mod_jk-problem-when-streaming-files-larger-than-%7E400k-%28causes-ClientAbortException%29-t2756411.html
>
> If I don't get any responses, then I can submit a bugzilla bug with a
> "testcase" war file and its source (maven driven) so that the devs can
> play around with it.
>
> Cheers,
> --
> Haroon Rafique
> <ha...@utoronto.ca>
>
>
> ---------- Forwarded message ----------
> Date: Mon, 4 Dec 2006 15:01:19 -0500 (EST)
> From: Haroon Rafique <ha...@utoronto.ca>
> To: users@tomcat.apache.org
> Subject: mod_jk problem when streaming files larger than ~400k (causes
>      ClientAbortException)
>
> Hi,
>
> I am using mod_jk 1.2.19 on Linux with JDK 1.5.0_08, tomcat 5.5.20. Our
> application is struts-based and in one of our actions we stream a PDF to the
> client. The pseudo-code for outputting the response back to the client is as
> follows (assuming baos contains a ByteArrayOutputStream):
>
>               OutputStream out = response.getOutputStream();
>               baos.writeTo(out);
>               out.flush();
>               out.close();
>
> We noticed no problems when the size of baos was less than 400k. Now the
> filesize has jumped to a little greater than 400k. With mod_jk in the picture,
> intermittently (not all the time), we get ClientAbortException:
>
>       Caused by: ClientAbortException:  java.io.IOException
>           at
>           org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:366)
>
> The end result being that the PDF is truncated and Acrobat considers it
> damaged.
>
> Without mod_jk in the picture, everything is fine.
>
> Turning up the mod_jk logging to debug gave me too much info. Turning it down
> to info gave me some clues. Basically, there are 3 flavors of the failures.
> Maybe they are all the same but it might appear different to a
> trained eye, so I'm posting all three.
>
> Flavor 1 error:
> ===============
> [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
>       ajp_connection_tcp_get_message::
>       jk_ajp_common.c (941): (local) Tomcat has forced a connection close for
>       socket 22
> [Mon Dec 04 14:28:59 2006] [25445:9920] [error]
>       ajp_get_reply::jk_ajp_common.c (1562): (local) Tomcat is down or network
>       problems. Part of the response has already been sent to the client
> [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
>       ajp_service::jk_ajp_common.c (18 28): (local) receiving from tomcat
>       failed,
>       recoverable operation attempt=0
> [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
>       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
>       failed,
>       recoverable operation attempt=1
> [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
>       ajp_process_callback::jk_ajp_common.c (1410): Writing to client aborted or
>       client
>       network problems
> [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
>       ajp_service::jk_ajp_common.c (1795): (local) request failed, because of
>       client
>       write error without recovery in send loop attempt=1
> [Mon Dec 04 14:28:59 2006] [25445:9920] [info]
>       jk_handler::mod_jk.c (2056): Aborting connection for worker=local
>
> Flavor 2 error:
> ===============
> [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
>       ajp_send_request::jk_ajp_common.c (1170): (local) socket 22 is not
>       connected
>       any more (errno=0)
> [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
>       ajp_send_request::jk_ajp_common.c (1194): (local) error sending request.
>       Will
>       try another pooled connection
> [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
>       ajp_send_request::jk_ajp_common.c (1218): (local) all endpoints are
>       disconnected
>       or dead
> [Mon Dec 04 14:30:30 2006] [25448:9920] [info]
>       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
>       failed,
>       recoverable operation attempt=1
> [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
>       ajp_connection_tcp_get_message::jk_ajp_common.c (941): (local) Tomcat has
>       forced a connection close for socket 22
> [Mon Dec 04 14:30:32 2006] [25448:9920] [error]
>       ajp_get_reply::jk_ajp_common.c (1562): (local) Tomcat is down or network
>       problems. Part of the response has already been sent to the client
> [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
>       ajp_service::jk_ajp_common.c (1828): (local) receiving from tomcat failed,
>       recoverable operation attempt=1
> [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
>       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
>       failed,
>       recoverable operation attempt=2
> [Mon Dec 04 14:30:32 2006] [25448:9920] [error]
>       ajp_service::jk_ajp_common.c (1879): (local) Connecting to tomcat failed.
>       Tomcat is probably not started or is listening on the wrong port
> [Mon Dec 04 14:30:32 2006] [25448:9920] [info]
>       jk_handler::mod_jk.c (2063): Service error=0 for worker=local
>
> Flavor 3 error:
> ===============
> [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
>       ajp_send_request::jk_ajp_common.c (1170): (local) socket 22 is not
>       connected any more (errno=0)
> [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
>       ajp_send_request::jk_ajp_common.c (1194): (local) error sending
>       request.  Will try another pooled connection
> [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
>       ajp_send_request::jk_ajp_common.c (1218): (local) all endpoints are
>       disconnected or dead
> [Mon Dec 04 14:32:31 2006] [25444:9920] [info]
>       ajp_service::jk_ajp_common.c (1867): (local) sending request to tomcat
>       failed,  recoverable operation attempt=1
>
>
> Does anyone have any experience with streaming large files using mod_jk? If I
> don't get any responses I will try the dev list.
>
> Here's my mod_jk.conf:
>
> LoadModule jk_module modules/mod_jk.so
> JkWorkersFile conf/workers.properties
> JkLogFile logs/mod_jk.log
> JkLogLevel info
> JkShmFile logs/mod_jk.shm
> JkMount /jkstatus/ status
> JkMount /sws/* local
>
> Here's my workers.properties:
>
> worker.list=local,status
> worker.local.type=ajp13
> worker.local.port=8009
> worker.local.host=localhost
> worker.status.type=status
> worker.status.port=8009
> worker.status.host=localhost
>
> Anyone see any glaring mistakes or oddities? As I mentioned earlier, the same
> setup worked fine. The only trigger that I can think of is the slight increase
> in file size.
>
> Any help appreciated.
>
> thanks,
> --
> Haroon Rafique
> <ha...@utoronto.ca>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org