[ 
https://issues.apache.org/jira/browse/CXF-6427?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sergey Beryozkin resolved CXF-6427.
-----------------------------------
    Resolution: Fixed

> Incorrect Response InputStream closing in AbstractClient
> --------------------------------------------------------
>
>                 Key: CXF-6427
>                 URL: https://issues.apache.org/jira/browse/CXF-6427
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 2.7.16
>            Reporter: Petr Miko
>            Assignee: Sergey Beryozkin
>             Fix For: Invalid
>
>
> In current implementation of _org.apache.cxf.jaxrs.client.AbstractClient_ is 
> response body input stream closed in following method
> {noformat}
>     protected boolean responseStreamCanBeClosed(Message outMessage, Class<?> 
> cls) {
>         return cls != InputStream.class
>             && 
> MessageUtils.isTrue(outMessage.getContextualProperty("response.stream.auto.close"));
>     } 
> {noformat}
> That means, that in case that if the _response.stream.auto.close_ is not set 
> to true, the input stream stays opened -> Socket is not free for reusing. 
> In my opinion the proper implementation should be:
> {noformat}
>   protected boolean responseStreamCanBeClosed(Message outMessage, Class<?> 
> cls) {
>     return !cls.isAssignableFrom(InputStream.class) || 
> MessageUtils.isTrue(outMessage.getContextualProperty("response.stream.auto.close"));
>   }
> {noformat}  
> This way is the response body input stream:
> * is closed even when the auto close property is not set (= default?) and cls 
> is not a child of InputStream
> * the input stream is not closed, if cls is child of InputStream class (do 
> not know if there might be cases of its subclasses) and the auto close 
> property is not set to true
> * the auto close property still can over-rule the fact that the cls is 
> assignable from InputStream
> The current implementation is in my opinion incorrect, because in case of a 
> lot quick/parallel requests over proxy clients we faced running out of 
> Sockets - similarly to what is described in CXF-5144



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to