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> 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
------------------------------------------------------------------------------
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