On 12/05/2014 18:32, Rémy Maucherat wrote:
> 2014-05-12 16:25 GMT+02:00 Mark Thomas <ma...@apache.org>:
> 
>>
>> In terms of whether there is a better place, I didn't look lower down
>> the stack. We probably only want to swallow this if we haven't read any
>> part of the request line.
>>
> Ok, I'll add back the two try/catch I removed, I should have cleaned up
> the "bad" cases where the completion handler from the buffer is pending,
> but the processor is recycled. Hopefully ;)
> (if not, hey, it's still "beta")

Hmm. This isn't being triggered by shut down. I still see the
ReadPendingException if I add a breakpoint to one of the
TestCoyoteOutputStream unit tests before shut down starts.

It does appear that there is some form of timing issue that is
triggering multiple read events for the same thread.

I'm trying to track it down but the catch that I put in originally needs
to be removed.

... a few hours go by...

I think I have got to the bottom of this. An async dispatch always adds
the socket to the poller but if the dispatch occurs on a container
thread then it will also be added to the poller when that thread exits
the AbstractConnectionHandler.process() method.

This looks like a bug with all the connectors but one that is more
obvious with Nio2 because it triggers the ReadPendingException. Fixing
this bug highlighted a minor issue on shutdown. I have a fix for that
too. Commits to follow shortly.

Mark


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

Reply via email to