https://bz.apache.org/bugzilla/show_bug.cgi?id=63816

--- Comment #2 from Mark Thomas <ma...@apache.org> ---
I've been able to create a test case for this.

This is one of those areas of the Servlet spec that could benefit from some
clarification. There is this text in the spec:

<quote>
The application is responsible to handle concurrent access to the request and
response objects if the async task is executing before the container-initiated
dispatch that called startAsync has returned to the container.
</quote>

Does this mean that the dispatching servlet should exit to service() method
immediately after calling startAsync(). I'd argue that that is good practice
implied by the above quote but not required.

Does this mean that the async thread should take steps not to use the request
and response objects until it knows the service() method has returned? That is
certainly the safest interpretation of "handle concurrent access" but it isn't
the only one.

Tomcat already handles the case where complete() or dispatch() are called on
the async thread before the service() method exists. We "just" need to handle
the error case in the same way.

It looks like this ASCII art is going to need to be updated:
https://github.com/apache/tomcat/blob/master/java/org/apache/coyote/AsyncStateMachine.java#L78

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to