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

Reply via email to