Re: Multipart over ajp btwn apache-tomcat fails sometimes...

2012-04-16 Thread Svante Kumlien
Hi, and thanks for the reponse Chris!

Regarding httpd or not, we're in the process of moving stuff from a
WebSphere 6.1 to Tomcat 7.x but since we don't have the money to move all
apps at once we run both servers behind a httpd, moving one app at a time.

The pcap-files contains the traffic between httpd and tomcat.
ok: https://docs.google.com/open?id=0B8cuXS6fkK2YUW5jdzJVbW95VEk
fail: https://docs.google.com/open?id=0B8cuXS6fkK2YWVlyTHcwdk1TZDQ

The http-headers are not particularly large (and I guess they would be
rejected all of the times if they were?).
Hmm, on second thought, the headers contain a rather 'large' LtpaToken2
header, don't know if it's considered too large or not though.
http headers: https://docs.google.com/open?id=0B8cuXS6fkK2YUFVhXzlJbEFFT28

No ssl, the httpd is ssl-enabled for other url:s but this particular url is
using plain http.

The ajp connector on the tomcat side is basic:
!-- Define an AJP 1.3 Connector on port 8009 --
Connector port=8009 protocol=AJP/1.3 redirectPort=8443 /

The context config looks like:
Context docBase=xxx path=/xxx reloadable=true
 allowCasualMultipartParsing=true
Valve className=org.apache.catalina.valves.AccessLogValve
directory=logs
   prefix=xxx_access_log. suffix=.txt
   pattern=%h %l %u %t quot;%rquot; %s %b /
/Context
The allowCasualMultipartParsing was something I added for testing but I
couldn't see any change in behaviour.

I will try to convince the guys running the servers to deploy a new version
of the app (with extended logging), guess I have to buy them a couple of
beers first though...

br /Svante



Den 13 april 2012 22:40 skrev Christopher Schultz 
ch...@christopherschultz.net:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 Svante,

 On 4/13/12 5:16 AM, Svante Kumlien wrote:
  I have an Apache acting as reverse proxy for a Tomcat over ajp.

 Standard stupid question: are you sure you need Apache httpd in the mix?




  (Gaahhh, the stack trace is swallowed, I only have the message
  string! The exception is thrown from  FileUploadBase.parseRequest
  :-( )

 Is there any way to get the full stack trace? Can you re-deploy with
 some modified code to get it?

  I attach two pcap-files with a ok-case and a fail-case.

 The mailing list has stripped your attachments. Try to copy/paste text
 into a re-post or post a link to your file(s) instead.

  The difference I can see is that in the fail-case tomcat starts to
  send the response before the first Body chunk is sent by Apache.

 Can you sniff the traffic between httpd and Tomcat?

 Do you have large headers or anything like that? The AJP message could
 be rejected because the headers don't fit into a single AJP packet --
 but that shouldn't trigger a failure in FileUploadBase.

 Is there HTTPS in the mix anywhere? Client certs can make the headers
 large.

  If we switch the proxyPass to use http everything works 100% of the
  time (which makes me think I have a misconfig AJP connector
  somewhere...).

 Can you post the rest of your AJP configuration? For instance, what
 does your Connector look like on the Tomcat side?

 - -chris
 -BEGIN PGP SIGNATURE-
 Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
 Comment: GPGTools - http://gpgtools.org
 Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

 iEYEARECAAYFAk+Ij00ACgkQ9CaO5/Lv0PCULQCgoBmlLJJkuSpcXDUxbKLc0Ptl
 eusAoLlVdrUsETpscxjlCaG04dO4/12e
 =UpxR
 -END PGP SIGNATURE-

 -
 To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
 For additional commands, e-mail: users-h...@tomcat.apache.org




Multipart over ajp btwn apache-tomcat fails sometimes...

2012-04-13 Thread Svante Kumlien
Hi all,

My stuff:
Windows Server 2008 R2 64 bit
Apache 2.2.22 with mod_proxy_ajp
Tomcat 7.0.25 (On same server as Apache)

I have an Apache acting as reverse proxy for a Tomcat over ajp.
Apache conf for the proxyPass:
Location /tomcatSite
ProxyPass ajp://127.0.0.1:8009/tomcatSite
ProxyPassReverse ajp://127.0.0.1:8009/tomcatSite
/Location

and the tomcat-config is really basic with nothing added to the default
config.

The webapp listening on /tomcatSite is a servlet-2.5 app and it works
nicely for all types of request except when it comes to multi-part. We have
a java-client uploading .zip-files every night to this webapp and sometimes
it works and sometimes it fails. When testing we trigger the file upload
manually using the same zip file every time with the same result: sometimes
it works, and sometimes it fails.

What happens when it works:
Client sends multipart http-request to Apache.
Apache proxy to Tomcat over AJP
Servlet is called on doPost
Servlet uses apache-commons-fileupload 1.2 to parse the request
Servlet does something with the file
Servlet returns (200 OK)

What happens when it doesn't work:
Client sends http-requst
Apache proxy request
Servlet is called on doPost
Servlet uses apache-commons-fileupload
Commons-fileupload throws an Exception with message Stream closed
(Gaahhh, the stack trace is swallowed, I only have the message string! The
exception is thrown from  FileUploadBase.parseRequest :-( )
Servlet sends an email to admin
Servlet returns 200 OK

The behaviour seem random but I would say that it fails 80% using the same
file, same server, no restart.

I attach two pcap-files with a ok-case and a fail-case. The difference I
can see is that in the fail-case tomcat starts to send the response before
the first Body chunk is sent by Apache. In the ok-case the first Body-chunk
is sent by Apache the same millisecond as the first Request packet but in
the failing case the first Body chunk is sent a couple of millis after the
first packet somehow allowing Tomcat/my servlet to fail before the complete
request is received.

If we switch the proxyPass to use http everything works 100% of the time
(which makes me think I have a misconfig AJP connector somewhere...).

Any ideas/pointers are more than welcome!

br
Svante

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Re: Multipart over ajp btwn apache-tomcat fails sometimes...

2012-04-13 Thread Christopher Schultz
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

Svante,

On 4/13/12 5:16 AM, Svante Kumlien wrote:
 I have an Apache acting as reverse proxy for a Tomcat over ajp.

Standard stupid question: are you sure you need Apache httpd in the mix?

 (Gaahhh, the stack trace is swallowed, I only have the message
 string! The exception is thrown from  FileUploadBase.parseRequest
 :-( )

Is there any way to get the full stack trace? Can you re-deploy with
some modified code to get it?

 I attach two pcap-files with a ok-case and a fail-case.

The mailing list has stripped your attachments. Try to copy/paste text
into a re-post or post a link to your file(s) instead.

 The difference I can see is that in the fail-case tomcat starts to
 send the response before the first Body chunk is sent by Apache.

Can you sniff the traffic between httpd and Tomcat?

Do you have large headers or anything like that? The AJP message could
be rejected because the headers don't fit into a single AJP packet --
but that shouldn't trigger a failure in FileUploadBase.

Is there HTTPS in the mix anywhere? Client certs can make the headers
large.

 If we switch the proxyPass to use http everything works 100% of the
 time (which makes me think I have a misconfig AJP connector
 somewhere...).

Can you post the rest of your AJP configuration? For instance, what
does your Connector look like on the Tomcat side?

- -chris
-BEGIN PGP SIGNATURE-
Version: GnuPG/MacGPG2 v2.0.17 (Darwin)
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk+Ij00ACgkQ9CaO5/Lv0PCULQCgoBmlLJJkuSpcXDUxbKLc0Ptl
eusAoLlVdrUsETpscxjlCaG04dO4/12e
=UpxR
-END PGP SIGNATURE-

-
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org