I cannot accept this pull request as it will break JAX-RS TCK tests.  If 
you want to add a configuration switch to automatically close the 
connection, thats fine, but the default needs to keep it open as this is 
required by the specification.

On 10/21/2013 4:52 PM, Anthony Whitford wrote:
> I created a fix for this issue by modifying the error handling of the
> ClientInvocation.extractResult method.
>
> See Pull Request: https://github.com/resteasy/Resteasy/pull/397
>
> My primary concern about catching WebApplicationException all over the
> place is that it seems to violate Separation of Concerns.  A user of the
> interface is not responsible for allocating or managing the connection,
> so why should it be responsible for closing it?  As a user of the
> interface, it may not even be clear that it is an RPC call -- that is
> some of the beauty of the abstraction.
>
> Note that in my example, the error message still comes through as
> text/html...  But the status code is 500.  I am merely focused on not
> violating the underlying Apache Client state.
>
> Please review.  Thank you,
>
> Anthony
>
>
>
> On Oct 17, 2013, at 2:10 PM, Bill Burke <bbu...@redhat.com
> <mailto:bbu...@redhat.com>> wrote:
>
>> Unfortunately, you are responsible for cleaning up the connection
>> yourself.  You must do:
>>
>> try {
>>
>>    ... do something with client ...
>>
>> } catch (WebApplicationException ex) {
>>
>> ex.getResponse().close();
>>
>> }
>>
>> This is because the response may contain an entity that the user wants
>> to access.  I'm pretty sure we're not allowed to automatically close the
>> underlying Response object.
>>
>>
>> On 10/17/2013 10:01 AM, Anthony Whitford wrote:
>>> I discovered a particularly nasty problem using the Resteasy Client
>>> Framework and have documented it in the issue tracker:
>>> https://issues.jboss.org/browse/RESTEASY-963
>>>
>>> In a nutshell, if a Client Proxy instance makes a call to the service
>>> and the service throws an exception, the Client is now rendered
>>> inoperable because the underlying connection is not adequately reset.
>>>
>>> A sample project is included with the issue that demonstrates the
>>> problem.  Note that there is a scenario (when a connection pool no
>>> longer has a valid connection available) where the call becomes FROZEN!
>>>
>>> If I had to guess on the solution, I would say that the invoke method
>>> of ClientInvoker needs to catch the exception and release the underlying
>>> connection in the event of an exception.
>>>
>>> https://github.com/resteasy/Resteasy/blob/master/jaxrs/resteasy-client/src/main/java/org/jboss/resteasy/client/jaxrs/internal/proxy/ClientInvoker.java#L104
>>>
>>> I think this is similar to the issue raised by John D. Ament on the
>>> 15th.  (Resteasy should automatically clean up
>>> the connection, but this can not be limited to a GC event because we
>>> have no control over GC events.)
>>>
>>> I look forward to seeing this fixed as this is a serious stability risk.
>>>  Thank you,
>>>
>>> Anthony
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> October Webinars: Code for Performance
>>> Free Intel webinars can help you accelerate application performance.
>>> Explore tips for MPI, OpenMP, advanced profiling, and more. Get the
>>> most from
>>> the latest Intel processors and coprocessors. See abstracts and
>>> register >
>>> http://pubads.g.doubleclick.net/gampad/clk?id=60135031&iu=/4140/ostg.clktrk
>>>
>>>
>>>
>>> _______________________________________________
>>> Resteasy-users mailing list
>>> Resteasy-users@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/resteasy-users
>>>
>>
>> --
>> Bill Burke
>> JBoss, a division of Red Hat
>> http://bill.burkecentral.com
>>
>> ------------------------------------------------------------------------------
>> October Webinars: Code for Performance
>> Free Intel webinars can help you accelerate application performance.
>> Explore tips for MPI, OpenMP, advanced profiling, and more. Get the
>> most from
>> the latest Intel processors and coprocessors. See abstracts and register >
>> http://pubads.g.doubleclick.net/gampad/clk?id=60135031&iu=/4140/ostg.clktrk
>> _______________________________________________
>> Resteasy-users mailing list
>> Resteasy-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/resteasy-users
>

-- 
Bill Burke
JBoss, a division of Red Hat
http://bill.burkecentral.com

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60135991&iu=/4140/ostg.clktrk
_______________________________________________
Resteasy-users mailing list
Resteasy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/resteasy-users

Reply via email to