Hi Freeman, thanks, try either JAXWS or JAXRS end to end system sync test (ex, JAXRSAsyncClientTest) where a 'use.async.conduit' is set as a property

Cheers, Sergey
On 12/01/17 13:46, Freeman Fang wrote:
Hi Sergey,

With  CXF-7122, we found that with ahc 4.1.0 afterwards, the
ReceivedTimeout we set on ahc RequestConfig won't affect the connection
return to the pool, so that the connection could be actually reused. So
that CXF can rely on ahc to manage the ReceivedTimeout and don’t need
that TimeoutThread(Timer) in CXF, so we remove that Timer in CXF-7122.

And we actually have AsyncHTTPConduitTest#testTimeout
and AsyncHTTPConduitTest#testTimeoutAsync to cover both the sync and
async calls

@Test
    public void testTimeout() throws Exception {
        updateAddressPort(g, PORT);
        HTTPConduit c = (HTTPConduit)ClientProxy.getClient(g).getConduit();
        c.getClient().setReceiveTimeout(3000);
        try {
            assertEquals("Hello " + request, g.greetMeLater(-5000));
            fail();
        } catch (Exception ex) {
            //expected!!!
        }
    }

    @Test
    public void testTimeoutAsync() throws Exception {
        updateAddressPort(g, PORT);
        HTTPConduit c = (HTTPConduit)ClientProxy.getClient(g).getConduit();
        c.getClient().setReceiveTimeout(3000);
        try {
            Response<GreetMeLaterResponse> future =
g.greetMeLaterAsync(-5000L);
            future.get();
            fail();
        } catch (Exception ex) {
            //expected!!!
        }
    }

Not sure what’s the real problem Veit run into, I will try to reproduce
the error.
-------------
Freeman(Yue) Fang

Red Hat, Inc.
FuseSource is now part of Red Hat



On Jan 12, 2017, at 8:42 PM, Sergey Beryozkin <sberyoz...@gmail.com
<mailto:sberyoz...@gmail.com>> wrote:

Hi Veit,

I recall there was another update related to introducing a
TimeoutThread, the async conduit was ignoring the receiveTimeout for
the async calls.

Hi Freeman, looks like that change affected the use of the async
conduit for the sync calls (this would affect both JAXWS & JAXRS), can
you double check please

Thanks, Sergey


On 03/01/17 17:09, Veit Guna wrote:
Hi.

I just upgraded from 3.1.8 to 3.1.9 with the effect, that one of my
tests is failing now regarding the receiveTimeout set on
HTTPClientPolicy.
I'm currently using CXF for JAX-RS client side proxy generation based on
my REST server interfaces. I'm also using the "use.async.http.conduit"
switch
to use the async http conduit.

The test is setting the receiveTimeout on the HTTPClientPolicy to 1 (ms)
like this:

JAXRSClientFactoryBean bean = new JAXRSClientFactoryBean();
...
MyService myService = bean.create(MyService.class);
ClientConfiguration clientConfig = WebClient.getConfig(myService);
clientConfig.getResponseContext().put("buffer.proxy.response",
cacheResponses);
clientConfig.getRequestContext().put("use.async.http.conduit", true);

HTTPClientPolicy clientPolicy =
clientConfig.getHttpConduit().getClient();
cllientPolicy.setReceiveTimeout(receiveTimeoutMillis);
clientPolicy.setConnectionTimeout(connectionTimeoutMillis);

Then it calls a status REST endpoint and expects a ProcessingException
to be thrown. But this is never thrown and the call succeeds.
In the past it failed as expected. I also switched to another endpoint
that takes a bit longer to respond but with the same effect.
Going back to 3.1.8 fixes the issue.

I took a look at the recent changes and found this:

https://issues.apache.org/jira/browse/CXF-7122

Maybe it is related to it?

Thanks!










--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/



--
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Reply via email to