On 06/09/2016 11:08, Romain Manni-Bucau wrote:
> Hello guys,
> 
> wonder if there is an estimated date for this fix to be included in a
> release. I'm starting to gather the project dependencies we need for next
> tomee release and tomcat is on the radar due to this one.

Releases are roughly monthly so the next round of releases are
provisionally scheduled for early October.

Mark


> 
> 
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog
> <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
> <http://www.tomitribe.com> | JavaEE Factory
> <https://javaeefactory-rmannibucau.rhcloud.com>
> 
> 2016-09-05 10:03 GMT+02:00 Mark Thomas <ma...@apache.org>:
> 
>> On 05/09/2016 08:14, Romain Manni-Bucau wrote:
>>> Hi Mark,
>>>
>>> tested on a lighter sample reproducing the issue pretty easily (real one
>>> would need 8.5) and your patch fixed it keeping the sample working fine
>>
>> Thanks for testing. The patch was a bit of a hack. The 'correct' fix
>> will be to update the state machine. Now I know that this patch fixes
>> the problem, I'll look at putting together a 'proper' fix for the next
>> round of releases.
>>
>> Mark
>>
>>>
>>>
>>> Romain Manni-Bucau
>>> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
>>> <https://blog-rmannibucau.rhcloud.com> | Old Wordpress Blog
>>> <http://rmannibucau.wordpress.com> | Github <https://github.com/
>> rmannibucau> |
>>> LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber
>>> <http://www.tomitribe.com> | JavaEE Factory
>>> <https://javaeefactory-rmannibucau.rhcloud.com>
>>>
>>> 2016-09-03 20:38 GMT+02:00 Mark Thomas <ma...@apache.org>:
>>>
>>>> On 03/09/2016 18:08, Romain Manni-Bucau wrote:
>>>>> This is an interesting quote cause i understand as it is implemented in
>>>>> tomcat but also means any usage would potentially lead to deadlocks or
>>>>> container integration to ensure thread safety is done right making in
>>>> both
>>>>> cases the spec unusable or hard to use from a user perspective. Should
>> it
>>>>> be pushed back to the spec?
>>>>
>>>> It wouldn't hurt for the EG to clarify exactly what they meant by
>>>> "...will not take effect until...". If it is intended that it might
>>>> include blocking the thread making the call, stating that explicitly
>>>> would be good.
>>>>
>>>> Meanwhile, try the following patch and let me know how you get on. It
>>>> achieves the same result (hopefully) without the blocking. The unit
>>>> tests pass but I want to think about it some more (and add some
>>>> comments) before committing.
>>>>
>>>> http://people.apache.org/~markt/patches/2016-09-03-
>>>> async-refactoring-tc9-v1.patch
>>>>
>>>> Mark
>>>>
>>>>
>>>>>
>>>>> Le 3 sept. 2016 18:28, "Mark Thomas" <ma...@apache.org> a écrit :
>>>>>
>>>>>> On 02/09/2016 15:47, Romain Manni-Bucau wrote:
>>>>>>> ~business code (simplified):
>>>>>>>
>>>>>>> public void myBusiness(AsyncResponse wrapperOfAsyncContext) {
>>>>>>>     new Thread() {
>>>>>>>         @Override
>>>>>>>         public void run() {
>>>>>>>             wrapperOfAsyncContext.synchronizedDispatch();
>>>>>>>         }
>>>>>>>     }.start();
>>>>>>>     wrapperOfAsyncContext.synchronizedMethod();
>>>>>>> }
>>>>>>>
>>>>>>> If timing is good (and encountered enough to say it is in real life)
>>>> then
>>>>>>> both method call will lock cause:
>>>>>>>
>>>>>>> 1. for the user thread: the dispatch call will call
>>>>>> pauseNonContainerThread
>>>>>>> to wait the myBusiness thread to end (actually a bit more but you get
>>>> the
>>>>>>> idea)
>>>>>>> 2. synchronizedMethod will lock on synchronizedDispatch
>>>>>>>
>>>>>>> so synchronizedMethod is lock on synchronizedDispatch which is lock
>> on
>>>>>>> the pauseNonContainerThread of the caller/http thread so both threads
>>>> are
>>>>>>> locked.
>>>>>>
>>>>>> Hmm.
>>>>>>
>>>>>> The relevant text from the Servlet spec is (for both dispatch() and
>>>>>> complete()) is:
>>>>>>
>>>>>> "If any of the dispatch methods are called before the
>>>>>> container-initiated dispatch that called startAsync has returned to
>> the
>>>>>> container, then the call will not take effect until after the
>>>>>> container-initiated dispatch has returned to the container."
>>>>>>
>>>>>> The critical question is what does "...will not take effect until..."
>>>> mean.
>>>>>>
>>>>>> Currently, Tomcat implements this as "...will block until...". I'll
>> look
>>>>>> into what it would take to implement this as "...note the request and
>>>>>> execute it once...". Whether or not we change this will depend a lot
>> on
>>>>>> how complicated the change would be.
>>>>>>
>>>>>> Mark
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
>>>>>> For additional commands, e-mail: dev-h...@tomcat.apache.org
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
>>>> For additional commands, e-mail: dev-h...@tomcat.apache.org
>>>>
>>>>
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
>> For additional commands, e-mail: dev-h...@tomcat.apache.org
>>
>>
> 


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

Reply via email to