cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Richard Opalka <ropa...@redhat.com>
Subject Re: CXF Continuations Not Portable Issue
Date Tue, 27 Nov 2012 08:12:24 GMT
Hi Sergey,

On 11/26/2012 04:58 PM, Sergey Beryozkin wrote:
> Hi Richard
> On 26/11/12 15:05, Richard Opalka wrote:
>> Hi Sergey,
>>
>> On 11/26/2012 02:57 PM, Richard Opalka wrote:
>>> Hi Sergey,
>>>
>>> On 11/26/2012 01:31 PM, Sergey Beryozkin wrote:
>>>> Hi Richard
>>>> On 26/11/12 12:29, Richard Opalka wrote:
>>>>> Hi Sergey,
>>>>>
>>>>>
>>>>> On 11/26/2012 01:21 PM, Sergey Beryozkin wrote:
>>>>>> Hi Richard
>>>>>> On 26/11/12 12:15, Richard Opalka wrote:
>>>>>>> Dear CXF developers,
>>>>>>>
>>>>>>>       I'm analyzing our recent CXF continuation related failures
>>>>>>> in CI
>>>>>>> and I identified the following problem:
>>>>>>>
>>>>>>> SVN commit id: 1409193
>>>>>>>
>>>>>>> introduced
>>>>>>>
>>>>>>> ---
>>>>>>> @@ -57,32 +57,30 @@ public class Servlet3ContinuationProvider
>>>>>>> implements
>>>>>>> ContinuationProvider {
>>>>>>>
>>>>>>>             if (continuation == null) {
>>>>>>>                 continuation = new Servlet3Continuation();
>>>>>>> +        } else {
>>>>>>> +            continuation.startAsyncAgain();
>>>>>>>             }
>>>>>>>             return continuation;
>>>>>>>         }
>>>>>>> ---
>>>>>>>
>>>>>>> method call that causes our JBossWeb to throw IllegalStateException.
>>>>>>> According to startAsync() javadoc for Throws:
>>>>>>>
>>>>>>> http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#startAsync%28%29
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ---
>>>>>>> Throws:
>>>>>>>        IllegalStateException - if this request is within the
>>>>>>> scope of a
>>>>>>> filter or servlet that does not support asynchronous operations
>>>>>>> (that
>>>>>>> is, isAsyncSupported() returns false), or if this method is called
>>>>>>> again
>>>>>>> without any asynchronous dispatch (resulting from one of the
>>>>>>> AsyncContext#dispatch methods), is called outside the scope of
>>>>>>> any such
>>>>>>> dispatch, or is called again within the scope of the same
>>>>>>> dispatch, or
>>>>>>> if the response has already been closed
>>>>>>> ---
>>>>>>>
>>>>>>> JBossWeb is strictly following these ISE guidelines (is not lenient
>>>>>>> like e.g. Jakarta Tomcat).
>>>>>>
>>>>>> What would you say about
>>>>>> "Subsequent invocations of this method, or its overloaded variant,
>>>>>> will
>>>>>> return the same AsyncContext instance, reinitialized as
>>>>>> appropriate. " ?
>>>>>>
>>>>>> Without this call I can not have the test doing multiple timeouts
>>>>>> on the
>>>>>> same continuation working...
>>>>>
>>>>> Makes sense to me. I had a look to our JBoss Web code again and I
>>>>> noticed one suspicious line there - I'm going to discuss it with our
>>>>> folks.
>>>>>
>>>>
>>>> Oh, thanks for that, I've just sent one more follow-up, sorry about 
>>>> the
>>>> noise, should've waited :-)
>>>
>>> Let's see what our Servlet experts will say -
>>> https://issues.jboss.org/browse/JBWEB-256
>>
>> Our JBoss Web guru is saying JBoss Web impl. is correct.
>>
> I'd appreciate to see more concrete clarifications, regarding the
> following two points:
> 
> - the documentation clearly says that repeated calls of startAsync()
> return the same instance.
> - what does it mean to have called startAsync() called on the same
> dispatch, does it apply to a current thread dispatch or to the whole
> suspended continuation process ?
> 
> To be honest, the positive statement on the multiple startAsync calls
> makes me think the ISE case applies to this method called multiple times
> during the same thread dispatch...
> 
> Thanks, Sergey

Unfortunately I'm not servlet expert :( But Remy suggested (see
JBWEB-256 comments):

'Feel free to seek further clarification from the specification expert
groups if you like.'

Cheers,

Rio

> 
>>>
>>>>
>>>> Cheers, Sergey
>>>>
>>>>>>
>>>>>>>
>>>>>>> The last issue that I identified with
>>>>>>> Servlet3ContinuationProvider is
>>>>>>> the isNew flag has incorrect initial value - it should be *true*.
>>>>>> Sure - needs to be fixed
>>>>>
>>>>> Thanks
>>>>>
>>>>>>
>>>>>> Thanks, Sergey
>>>>>>
>>>>>>>
>>>>>>> Cheers,
>>>>>>>
>>>>>>> Rio
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
> 
> 


-- 
Richard Opalka
Principal Software Engineer
JBoss, by Red Hat
Cell: +420 731 186 942

Mime
View raw message