On 09/06/17 16:26, Violeta Georgieva wrote: > 2017-06-09 17:25 GMT+03:00 Mark Thomas <ma...@apache.org>:
<snip/> >> I've spent some time working through the various possible combinations >> of events and have concluded it is impossible to completely fix this >> without imposing additional requirements on applications that the >> specification doesn't mention. >> >> However, I believe that we can do better than the current >> implementation. What I have on mind would: >> >> - always trigger AsyncListener.onError() for all listeners >> - generally, process the complete() dispatch() call from the >> AsyncListener rather than any from the non-container thread >> - generally, throw an ISE if complete() or dispatch() is called >> from the non-container thread after that thread experiences an I/O >> error >> - leave a small timing window where it was possible that the complete() >> or dispatch() from the non-container thread would be used rather than >> from the AsyncListener. In that case the AsyncListener would see the >> ISE but any remaining AsyncListener instances would still be called >> >> I don't see a way of doing better than this without spec changes / >> clarifications. >> >> WDYT? > > +1 > I'm able to test the new behavior with my real web app. Excellent. I've committed my proposed fix. The async unit tests pass which is generally a good sign. If this works better with your real web application then we can look to back-port this. Mark --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org