You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Andriy Redko (Jira)" <ji...@apache.org> on 2023/11/07 02:29:00 UTC

[jira] [Commented] (CXF-8955) Custom timeout with Message.RECEIVE_TIMEOUT not working with hc5

    [ https://issues.apache.org/jira/browse/CXF-8955?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17783450#comment-17783450 ] 

Andriy Redko commented on CXF-8955:
-----------------------------------

[~michael.wins] thank you for reporting the issue, it seems like it is indeed the problem on CXF side that (apparently) impacts the async HttpClient 4.x / 5.x, the way timeout is propagated right now is through {color:#000000}{color:#000000}HTTPClientPolicy{color}{color} that is shared, so basically the timeout is being the subject of data race.  

> Custom timeout with Message.RECEIVE_TIMEOUT not working with hc5
> ----------------------------------------------------------------
>
>                 Key: CXF-8955
>                 URL: https://issues.apache.org/jira/browse/CXF-8955
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-WS Runtime
>    Affects Versions: 4.0.3
>         Environment: Fedora 36, Java 17, cxf 4.0.3
>            Reporter: Michael Wins
>            Priority: Major
>         Attachments: cxf_timeout_bug.tar-2.gz
>
>
> Hi, I am trying to set custom read timeouts for WS operations in an interceptor:
> {code:java}
> public class CustomReadTimeoutInterceptor extends AbstractPhaseInterceptor<Message> {
> ...
> @Override
> public void handleMessage(Message message) {
>   message.put(Message.RECEIVE_TIMEOUT, timeoutMillis);
> }
> ...{code}
> That works well when using the JDK http client, but it does NOT work with the hc5 async client.
> It looks like requests issued in parallel affect each others timeout settings.
>  
> Download the attached sample project, which contains a CustomReadTimeoutInterceptor and starts two requests in parallel with different timeouts (4 and 2 seconds).
> Execute both 
> {code:java}
> mvn
> {code}
> and
> {code:java}
> mvn -DuseAsync
> {code}
> and compare the output. The output of the first will be like
> {code:java}
> CLIENT[19]: Duration: 2010 millis 
> CLIENT[29]: Duration: 4211 millis{code}
> (which is as expected) whereas the second - using hc5 async - will result in
> {code:java}
> CLIENT[29]: Duration: 4269 millis  
> CLIENT[19]: Duration: 4012 millis{code}
> Now I am wondering if my code is somehow incorrect or if it is cxf's fault...



--
This message was sent by Atlassian Jira
(v8.20.10#820010)