On Mon, Apr 6, 2009 at 11:47 PM, Alan Burlison <alan.burli...@sun.com> wrote:

> We are using the ServletWebServer class, and we are getting occasional
> hangs, where the listener thread gets stuck as follows:

I'll never stop wondering why people are using this stuff for serious jobs.

> The problem is this: when an incoming connection comes in, a new
> HttpServletRequestImpl object is created.  The constructor of that class
> reads in the HTTP headers.  The problem with *that* is that the
> HttpServletRequestImpl constructor runs in the same thread that accepts
> incoming connections, so if it blocks for any reason (e.g. the client hangs)
> it blocks the accept thread, which means that any new connections also hang.

Interesting. News to me, that the accept thread must not block, but one never
stops to learn.


> Can anyone think of any reasons why this might cause problems?  If not I'll
> do the changes and submit a patch.

Please do. Not the first valuable patch from you.



> I also note that Connection class does this:
>
>        // set read timeout to 30 seconds
>        socket.setSoTimeout (30000);
>
> That *should* mean that the maximum time a client can hang the server for is
> 30 seconds, but by observation that's clearly not happening and needs
> further investigation.

Patches in that area should be welcome as well.


Jochen



-- 
I have always wished for my computer to be as easy to use as my
telephone; my wish has come true because I can no longer figure out
how to use my telephone.

    -- (Bjarne Stroustrup,
http://www.research.att.com/~bs/bs_faq.html#really-say-that
       My guess: Nokia E50)

Reply via email to