I should also mention that I'm doing Servlet 3.0 async requests:
AsyncContext context= req.startAsync();
...
context.complete();

I've also tried using AJP instead of HTTP between tomcat and nginx, and I see 
similar behaviour; tomcat doesn't terminate the reply when using APR.

Anyone have any ideas about what's going on, any workarounds, or even places in 
the tomcat code to look for possible errors?

Thanks,
Chris

On March 10, 2011 12:37:00 pm Chris wrote:
> I've narrowed this down even further.
> 
>  As I mentioned below, the "0\r\n\r\n" was not being sent to nginx, although 
> it was being sent to curl. The difference was that nginx was doing a GET 
> HTTP/1.0, while curl was using HTTP/1.1. If I configure curl to use HTTP/1.0 
> then I get the same result: no "0\r\n\r\n" is sent.
> 
> So, to summarize:
> - GET HTTP/1.0 results in no terminating "0\r\n\r\n" for the chunked 
> response, regardless of whether libtcnative is being used.
> - The difference when using libtcnative is that the connection isn't 
> terminated after the response is sent.
> 
> Chris
> 
> On March 10, 2011 10:33:00 am Chris wrote:
> > Hi All,
> > Yesterday I created bug 50906 for this issue: 
> > https://issues.apache.org/bugzilla/show_bug.cgi?id=50906
> > 
> > Since then I've got some more details to add:
> > 
> > - I'm running with nginx in front of tomcat
> > - The 60 second timeout is happening in nginx and not tomcat
> > - Regardless of whether or not I'm using libtcnative, I don't see the 
> > terminating "0\r\n\r\n" being sent by tomcat to nginx
> > - When *not* using libtcnative, the connection is closed after writing the 
> > response; there's a FIN, in addition to ACK on the last TCP packet from 
> > tomcat. Nginx seems to use this to infer the end of the response and add 
> > the "0\r\n\r\n" to the reply sent to the client.
> > - When using libtcnative, there is no FIN on the last TCP ACK packet, and 
> > the connection stays open. One minute later nginx times out waiting for the 
> > response to complete and adds the "0\r\n\r\n" to the response to the client.
> > - I notice that if I use curl to make a request directly to tomcat (instead 
> > of going through nginx), then I do see the terminating "0\r\n\r\n". I still 
> > see a difference in that tomcat disconnects immediately after the reply 
> > when *not* using the native library.
> > 
> > Any ideas?
> > 
> > Thanks,
> > Chris
> > 
> > On March 9, 2011 04:56:22 pm Mark Thomas wrote:
> > > On 09/03/2011 21:49, Chris wrote:
> > > > Hi,
> > > > I'm using Tomcat 7.0.8 on Ubuntu 10.10.
> > > > 
> > > > When using the APR based Tomcat Native Library (libtcnative), responses 
> > > > from Tomcat are being sent with a chunked encoding, but the "0" 
> > > > terminating the chunked response isn't sent until exactly 1 minute 
> > > > later.
> > > > 
> > > > The response is being written to an 
> > > > org.apache.catalina.connector.CoyoteOutputStream. The following calls 
> > > > are made:
> > > > out.write(resp);
> > > > out.flush();
> > > > out.close();
> > > > 
> > > > If I just remove the libtcnative-1.so, so that Tomcat loads without 
> > > > using it, then the response still uses chunked encoding, but the 
> > > > terminating "0" is sent immediately, with the rest of the response.
> > > > 
> > > > Any ideas would be appreciated.
> > > 
> > > Sounds like a bug. Please create a bugzilla entry.
> > > 
> > > Mark
> > > 
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
> > > For additional commands, e-mail: users-h...@tomcat.apache.org
> > > 
> > > 
> > 
> 

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

Reply via email to